BoundaryML/baml · error

No asset named ' ' in release

Error message

No asset named '{}' in release

What it means

get_playground_dist searches the release's assets for one whose "name" equals the expected web panel asset name. If no asset matches, this error names the missing asset. The release exists but does not contain the playground web panel artifact the server needs.

Solutions

  1. List the release assets (via the GitHub UI or API) and compare their names with the expected asset name.
  2. Align the server version with the release that contains the expected asset (pin the version instead of using latest).
  3. Re-publish the release with the missing web panel asset if the release build omitted it.
Defensive patterns

Strategy: validation

Validate before calling

// preflight: confirm the expected asset exists in the release
let v: serde_json::Value = reqwest::get(&api_url).await?.json().await?;
let found = v["assets"].as_array().map_or(false, |a| {
    a.iter().any(|x| x["name"] == "baml-playground-web.tar.gz")
});
if !found { eprintln!("Expected web panel asset missing from release"); }

Type guard

fn asset_exists<'a>(release: &'a serde_json::Value, name: &str) -> Option<&'a serde_json::Value> {
    release["assets"].as_array()?.iter().find(|a| a["name"].as_str() == Some(name))
}

Try / catch

match get_playground_dist().await {
    Err(e) if e.to_string().contains("No asset named") => {
        eprintln!("Version mismatch between server and release assets; pin server version");
    }
    other => other?,
}

Prevention

When it happens

Trigger: None of the release assets' name fields equals web_panel_asset_name — the release was built without the web panel asset or the expected asset name changed between versions.

Common situations: Server version newer than the release assets (asset naming changed); a partially uploaded release; fetching the wrong release (latest vs pinned tag) whose assets are named differently.

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 BoundaryML/baml@bd85ce9dee (2026-09-12). Data as JSON: /api/errors/098f703fcf8d5746. Report an issue: GitHub.

Appendix: source

Thrown at engine/playground-server/src/server.rs:165

            status,
            body
        ));
    }

    tracing::info!("Parsing JSON response...");
    let release: serde_json::Value = resp
        .json()
        .await
        .map_err(|e| anyhow::anyhow!("Failed to parse JSON response: {e}"))?;

    // Find the main asset
    let assets = release["assets"]
        .as_array()
        .ok_or_else(|| anyhow::anyhow!("No assets in release metadata"))?;
    let asset = assets
        .iter()
        .find(|a| a["name"].as_str() == Some(&web_panel_asset_name))
        .ok_or_else(|| anyhow::anyhow!("No asset named '{}' in release", web_panel_asset_name))?;
    let download_url = asset["browser_download_url"]
        .as_str()
        .ok_or_else(|| anyhow::anyhow!("No download URL for asset"))?;

    // Find the checksum asset
    let checksum_asset = assets
        .iter()
        .find(|a| a["name"].as_str() == Some(&checksum_asset_name))
        .ok_or_else(|| {
            anyhow::anyhow!(
                "No checksum asset named '{}' in release",
                checksum_asset_name
            )
        })?;
    let checksum_url = checksum_asset["browser_download_url"]
        .as_str()
        .ok_or_else(|| anyhow::anyhow!("No download URL for checksum asset"))?;

View on GitHub (pinned to bd85ce9dee)