aaif-goose/goose · error
MLX model {} has no downloadable files
Error message
MLX model {} has no downloadable files What it means
resolve_mlx_model downloads each filename in its computed list and derives the snapshot root with snapshot_root_for_file, which always returns Some. So this error fires only when the download loop never executed - the repo resolved to zero downloadable filenames (empty repo, all siblings filtered out, or an API response with no matching files), leaving snapshot_path None.
Source
Thrown at crates/goose-local-inference/src/hf_models.rs:2168
.progress(progress.clone())
.send()
.await
.map_err(anyhow::Error::from)
{
Ok(path) => path,
Err(error) => {
progress.fail(&error);
return Err(error);
}
};
if snapshot_path.is_none() {
snapshot_path = snapshot_root_for_file(&path, &filename);
}
progress.finish_file(file_size);
}
progress.complete();
let snapshot_path = snapshot_path
.ok_or_else(|| anyhow::anyhow!("MLX model {} has no downloadable files", repo_id))?;
let total_size = if total_size > 0 {
total_size
} else {
dir_size(&snapshot_path)
};
Ok(ResolvedLocalModel::Mlx {
repo_id: repo_id.to_string(),
variant_id: variant_id.to_string(),
snapshot_path,
total_size,
})
}
#[derive(Clone)]
struct HfDownloadProgress {
model_id: String,
total_bytes: u64,
completed_bytes: Arc<Mutex<u64>>,View on GitHub (pinned to 3810898a74)
Solutions
- Open the repo on huggingface.co and confirm it actually contains files
- Choose a known-good mlx-community repo with recent commits
- Re-run the model search and reselect to pick up the current file list
Defensive patterns
Strategy: validation
Validate before calling
// before resolving, confirm the repo exposes files via the HF API
// (any cheap siblings listing works)
let siblings = list_repo_siblings(&repo_id).await?;
anyhow::ensure!(!siblings.is_empty(), "repo {repo_id} has no files to download"); Try / catch
if err.to_string().contains("has no downloadable files") {
// the MLX file list came back empty: pick a real mlx-community repo and retry
} Prevention
- Curate MLX model choices from repos with recent commits and real weight files
- Handle empty-API-response as a hard error at selection time, not after download
- Cache the file list at selection time and revalidate before large downloads
When it happens
Trigger: Resolving an MLX model whose filename list is empty: mistyped repo id that still resolved, a repo with no weight files, or a non-MLX repo routed to the MLX resolver.
Common situations: Selecting a newly created or emptied mlx-community repo; repository restructure removing the expected files; upstream deletions.
Related errors
- Unknown local inference backend '{}'
- Model spec '{}' is ambiguous; choose one of: {}
- Download failed after {} retries: {}
- Failed to download: HTTP {}
- llama.cpp model '{}' is missing a quantization
AI-assisted analysis of aaif-goose/goose@3810898a74 (2026-08-16).
Data as JSON: /api/errors/da0c3ebaf16411d6.
Report an issue: GitHub.