Zackriya-Solutions/meetily · warning · anyhow::Error
Parakeet model {} is currently downloading
Error message
Parakeet model {} is currently downloading What it means
Returned by load_model when the model's status is ModelStatus::Downloading. The status map marks a model Downloading while download_model_detailed is streaming files, and discover_models also forces Downloading for names present in active_downloads, so the engine refuses to load a half-written model directory.
Source
Thrown at frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs:418
let model = ParakeetModel::new(&model_info.path, quantized)
.map_err(|e| anyhow!("Failed to load Parakeet model {}: {}", model_name, e))?;
// Update current model and model name
*self.current_model.write().await = Some(model);
*self.current_model_name.write().await = Some(model_name.to_string());
log::info!(
"Successfully loaded Parakeet model: {} ({})",
model_name,
if quantized { "Int8 quantized" } else { "FP32" }
);
Ok(())
}
ModelStatus::Missing => {
Err(anyhow!("Parakeet model {} is not downloaded", model_name))
}
ModelStatus::Downloading { .. } => {
Err(anyhow!("Parakeet model {} is currently downloading", model_name))
}
ModelStatus::Error(ref err) => {
Err(anyhow!("Parakeet model {} has error: {}", model_name, err))
}
ModelStatus::Corrupted { .. } => {
Err(anyhow!("Parakeet model {} is corrupted and cannot be loaded", model_name))
}
}
}
/// Unload the current model
pub async fn unload_model(&self) -> bool {
let mut model_guard = self.current_model.write().await;
let unloaded = model_guard.take().is_some();
if unloaded {
log::info!("Parakeet model unloaded");
}
View on GitHub (pinned to 0281737d87)
Solutions
- Wait for the download completion event emitted by parakeet_download_model, then retry the load
- Poll parakeet_get_available_models until status is "Available" with a timeout before giving up
- Disable the load/select button in the UI while a download is in progress
Example fix
// before
await invoke('parakeet_load_model', { modelName });
// after - only load when not downloading
const info = (await invoke<any[]>('parakeet_get_available_models')).find(m => m.name === modelName);
if (info && typeof info.status === 'object' && 'Downloading' in info.status) {
await new Promise(res => { /* resolve on download-complete event */ });
}
await invoke('parakeet_load_model', { modelName }); Defensive patterns
Strategy: validation
Validate before calling
// Refuse to load while a download is active for this model
let infos = engine.discover_models().await?;
if let Some(m) = infos.iter().find(|m| m.name == name) {
if matches!(m.status, ModelStatus::Downloading { .. }) {
anyhow::bail!("download in flight; wait for completion");
}
} Type guard
fn is_downloading(info: &ModelInfo) -> bool {
matches!(info.status, ModelStatus::Downloading { .. })
}
// TS side: struct variants arrive externally tagged, e.g. { Downloading: { progress: 42 } }
function isDownloading(status: unknown): boolean {
return typeof status === 'object' && status !== null && 'Downloading' in status;
} Try / catch
try {
await invoke('parakeet_load_model', { modelName });
} catch (e) {
if (String(e).includes('currently downloading')) {
// benign: attach to the running download's progress events and retry on completion
} else {
throw e;
}
} Prevention
- Bind the Load/Use button's disabled state to Downloading status from the models list
- Have exactly one component own download invocation; others subscribe to progress events
- Wait for the download-complete event rather than guessing a duration
When it happens
Trigger: Calling parakeet_load_model while a download for the same model is active (download started from the settings UI, a retry, or a second window); calling load right after triggering download without waiting for the completion event; a download task that is slow on large files (encoder ~652 MB) so the overlap window is minutes long.
Common situations: UI lets the user click "Use model" while the progress bar is still moving; double-invocation of the download command where one instance is still active; slow connection (v3 downloads come from meetily.towardsgeneralintelligence.com, v2 from huggingface.co) making users think the download finished.
Related errors
- Parakeet model {} is not downloaded
- Parakeet model {} has error: {}
- Parakeet model {} is corrupted and cannot be loaded
- Can only delete corrupted or available Parakeet models. Mode
- Download already in progress for model: {}
AI-assisted analysis of Zackriya-Solutions/meetily@0281737d87 (2026-08-16).
Data as JSON: /api/errors/80af4904b78a9b7c.
Report an issue: GitHub.