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
- List the release assets (via the GitHub UI or API) and compare their names with the expected asset name.
- Align the server version with the release that contains the expected asset (pin the version instead of using latest).
- 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
- Keep server version and release asset naming in lockstep
- Pin to releases verified to contain the expected asset
- Diff release asset names after version upgrades
- Alert on release builds missing required assets
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
- No checksum asset named
- {err}
- Failed to fetch release metadata
- Failed to parse JSON response
- GitHub API request failed with status
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)