Zackriya-Solutions/meetily · error · anyhow::Error
Model {} is not downloaded
Error message
Model {} is not downloaded What it means
load_model matched the name in available_models but its ModelStatus is Missing: the catalog entry exists, however no model file was found on disk. The engine refuses to load and expects the model to be downloaded first (neighboring statuses produce their own messages for Downloading/Error/Corrupted).
Source
Thrown at frontend/src-tauri/src/whisper_engine/whisper_engine.rs:331
WhisperContext::new_with_params(&model_info.path.to_string_lossy(), context_param)
.map_err(|e| anyhow!("Failed to load model {}: {}", model_name, e))?
// Suppressor dropped here, stderr restored
};
// Update current context and model
*self.current_context.write().await = Some(ctx);
*self.current_model.write().await = Some(model_name.to_string());
// Enhanced acceleration status reporting
let acceleration_status = acceleration.status_label();
log::info!("Successfully loaded model: {} with {} (Performance Tier: {:?}, Beam Size: {}, Threads: {:?})",
model_name, acceleration_status, hardware_profile.performance_tier,
adaptive_config.beam_size, adaptive_config.max_threads);
Ok(())
},
ModelStatus::Missing => {
Err(anyhow!("Model {} is not downloaded", model_name))
},
ModelStatus::Downloading { .. } => {
Err(anyhow!("Model {} is currently downloading", model_name))
},
ModelStatus::Error(ref err) => {
Err(anyhow!("Model {} has error: {}", model_name, err))
},
ModelStatus::Corrupted { .. } => {
Err(anyhow!("Model {} is corrupted and cannot be loaded", model_name))
}
}
}
pub async fn unload_model(&self) -> bool {
let mut ctx_guard = self.current_context.write().await;
let unloaded = ctx_guard.take().is_some();
if unloaded {
log::info!("📉Whisper model unloaded");View on GitHub (pinned to 0281737d87)
Solutions
- Download the model first via the model manager / UI download flow, then load it
- If the file was placed manually, put it at the exact expected path and filename inside the models directory and refresh the model list
- Re-select an available model in settings if the previously used one is gone
Example fix
// before - load blindly, fails with 'Model base is not downloaded'
engine.load_model("base").await?;
// after - check status and download when missing
use whisper_engine::ModelStatus;
let models = engine.list_models().await?;
let m = models.iter().find(|m| m.name == "base").unwrap();
match m.status {
ModelStatus::Available => engine.load_model("base").await?,
ModelStatus::Missing => { engine.download_model("base").await?; engine.load_model("base").await? }
other => return Err(anyhow!("Model base not loadable: {:?}", other)),
} Defensive patterns
Strategy: validation
Validate before calling
use whisper_engine::ModelStatus;
let models = engine.list_models().await?;
match models.iter().find(|m| m.name == model_name) {
Some(m) if matches!(m.status, ModelStatus::Available) => engine.load_model(model_name).await?,
Some(_) => engine.download_model(model_name).await?, // Missing/NotDownloaded -> fetch first
None => return Err(anyhow!("model {:?} unknown", model_name)),
} Type guard
async fn is_model_ready(engine: &WhisperEngine, name: &str) -> bool {
engine.available_models.read().await
.get(name)
.map(|m| matches!(m.status, ModelStatus::Available))
.unwrap_or(false)
} Try / catch
try { engine.load_model(name).await? }
catch (e) if e.to_string().contains("is not downloaded") {
engine.download_model(name).await?;
engine.load_model(name).await?;
} Prevention
- Check ModelStatus before load_model; drive the UI download button from the same status
- Disable model selection in the UI for entries whose status is not Available
- Refresh the model list when the models directory changes (manual file add/remove)
When it happens
Trigger: Calling load_model for a model whose file is absent from the models directory: fresh install before any download, the model file was deleted or moved externally, or the download has not finished (that state raises the separate 'currently downloading' error).
Common situations: First launch with no models downloaded; user or a cleanup tool emptied the models folder; settings persist a previously downloaded model name whose file was removed.
Related errors
- Summary model recommendation is not ready yet
- No audio samples decoded from file
- Whisper transcription failed on segment {}: {}
- Failed to load model '{}': {}
- Whisper engine not initialized
AI-assisted analysis of Zackriya-Solutions/meetily@0281737d87 (2026-08-16).
Data as JSON: /api/errors/6f8b7cda5cf4d1f9.
Report an issue: GitHub.