Zackriya-Solutions/meetily · error · anyhow::Error
Parakeet model {} is not downloaded
Error message
Parakeet model {} is not downloaded What it means
Returned by load_model when the model's tracked status is ModelStatus::Missing. discover_models computes this status from the filesystem: the directory models_dir/<name> must exist and contain the required files for the quantization type, otherwise the entry is Missing. It means the name is a known catalog model (parakeet-tdt-0.6b-v3-int8 or parakeet-tdt-0.6b-v2-int8) but no complete local copy exists.
Source
Thrown at frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs:415
// Load model based on quantization type
let quantized = model_info.quantization == QuantizationType::Int8;
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 {View on GitHub (pinned to 0281737d87)
Solutions
- Call parakeet_download_model (engine.download_model) for the model and wait for the download-complete event before loading
- Verify with parakeet_get_available_models that status is now "Available", then retry parakeet_load_model
- If status is stuck at Missing although files exist on disk, restart the app so discover_models re-scans the models directory
Example fix
// before
await invoke('parakeet_load_model', { modelName: 'parakeet-tdt-0.6b-v3-int8' });
// after
const models = await invoke<any[]>('parakeet_get_available_models');
const m = models.find(x => x.name === 'parakeet-tdt-0.6b-v3-int8');
if (m?.status !== 'Available') {
await invoke('parakeet_download_model', { modelName: m.name });
// wait for the parakeet download-complete event before continuing
}
await invoke('parakeet_load_model', { modelName: m.name }); Defensive patterns
Strategy: validation
Validate before calling
// Only attempt load when discovery reports the model on disk
let infos = engine.discover_models().await?;
match infos.iter().find(|m| m.name == name) {
Some(m) if matches!(m.status, ModelStatus::Available) => engine.load_model(name).await?,
Some(_) => { /* trigger download flow first */ }
None => { /* unknown model name */ }
} Type guard
// TS side: ModelStatus unit variants serialize as plain strings
function isModelAvailable(info: { status: unknown }): boolean {
return info.status === 'Available';
} Try / catch
try {
await invoke('parakeet_load_model', { modelName });
} catch (e) {
if (String(e).includes('is not downloaded')) {
// start download flow, then retry load on completion event
} else {
throw e;
}
} Prevention
- Drive the model picker from parakeet_get_available_models and disable 'Load' unless status is Available
- Kick off model download on first run instead of waiting for the user to hit Load
- After delete_model or a failed download, always re-check status before loading
When it happens
Trigger: Invoking parakeet_load_model / engine.load_model on a fresh install before parakeet_download_model completes; after delete_model succeeded (status reset to Missing); after a download timeout or stream error reset the status to Missing; after the models directory was removed manually while the app or a stale in-memory map still lists the model.
Common situations: First-run UI flow lets the user pick a model that was never downloaded; user cleared Application Support to free space; a previous download failed mid-stream (the error paths in download_model_detailed set status back to Missing) and the UI did not re-trigger the download.
Related errors
- Parakeet model {} is currently downloading
- Parakeet model {} has error: {}
- Parakeet model {} is corrupted and cannot be loaded
- Parakeet model '{}' not found
- Can only delete corrupted or available Parakeet models. Mode
AI-assisted analysis of Zackriya-Solutions/meetily@0281737d87 (2026-08-16).
Data as JSON: /api/errors/74f28d3133b944f5.
Report an issue: GitHub.