Zackriya-Solutions/meetily · error · anyhow::Error
Parakeet model '{}' not found
Error message
Parakeet model '{}' not found What it means
Returned by delete_model when the name is not a key in the available_models map. The catalog is built by discover_models from a fixed config list (parakeet-tdt-0.6b-v3-int8, parakeet-tdt-0.6b-v2-int8), so any other string - including FP32 names, v1 names, or typos - is unknown even if a similarly named directory exists on disk.
Source
Thrown at frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs:492
Ok(result.text)
}
/// Get the models directory path
pub async fn get_models_directory(&self) -> PathBuf {
self.models_dir.clone()
}
/// Delete a corrupted model
pub async fn delete_model(&self, model_name: &str) -> Result<String> {
log::info!("Attempting to delete Parakeet model: {}", model_name);
// Get model info to find the directory path
let model_info = {
let models = self.available_models.read().await;
models.get(model_name).cloned()
};
let model_info = model_info.ok_or_else(|| anyhow!("Parakeet model '{}' not found", model_name))?;
log::info!("Parakeet model '{}' has status: {:?}", model_name, model_info.status);
// Allow deletion of corrupted or available models
match &model_info.status {
ModelStatus::Corrupted { .. } | ModelStatus::Available => {
// Delete the entire model directory
if model_info.path.exists() {
fs::remove_dir_all(&model_info.path).await
.map_err(|e| anyhow!("Failed to delete directory '{}': {}", model_info.path.display(), e))?;
log::info!("Successfully deleted Parakeet model directory: {}", model_info.path.display());
} else {
log::warn!("Directory '{}' does not exist, nothing to delete", model_info.path.display());
}
// Update model status to Missing
{
let mut models = self.available_models.write().await;View on GitHub (pinned to 0281737d87)
Solutions
- List valid names first with parakeet_get_available_models (or engine.discover_models) and pass exactly one of those name strings
- Update hardcoded model ids in the frontend to the current catalog (parakeet-tdt-0.6b-v3-int8 / parakeet-tdt-0.6b-v2-int8)
- If a directory with a rogue name exists under the models dir, remove it manually via open_parakeet_models_folder - delete_model will never see it
Example fix
// before
engine.delete_model("parakeet-tdt-0.6b-v3").await?;
// after - resolve the exact catalog name before deleting
let models = engine.discover_models().await?;
let target = models.iter().find(|m| m.name == requested)
.ok_or_else(|| anyhow!("unknown model {requested}; valid: {:?}",
models.iter().map(|m| m.name.clone()).collect::<Vec<_>>()))?;
engine.delete_model(&target.name).await?; Defensive patterns
Strategy: validation
Validate before calling
// Resolve against the live catalog before deleting
let names: Vec<String> = engine.discover_models().await?
.into_iter().map(|m| m.name).collect();
if !names.contains(&name) {
anyhow::bail!("'{name}' is not a Parakeet catalog model; valid: {names:?}");
} Type guard
function isKnownParakeetModel(name: string, catalog: { name: string }[]): boolean {
return catalog.some(m => m.name === name);
} Try / catch
try {
await invoke('parakeet_delete_corrupted_model', { modelName });
} catch (e) {
if (String(e).includes('not found')) {
// refresh the model list; the id is stale or mistyped - never retry unchanged
} else {
throw e;
}
} Prevention
- Never hardcode model ids in the UI; source them from parakeet_get_available_models
- After app updates, re-fetch the catalog - ids like parakeet-tdt-0.6b-v3-int8 can change between versions
- Keep Whisper model ids and Parakeet ids in separate constants to avoid cross-API calls
When it happens
Trigger: Calling parakeet_delete_corrupted_model / engine.delete_model with a mistyped name or an unsupported variant (e.g. "parakeet-tdt-0.6b-v3" without the int8 suffix, or "parakeet-tdt-0.6b-v2-fp32"); passing a Whisper model name to the Parakeet API; a stale frontend hardcoding an old model identifier after a catalog change.
Common situations: Frontend model list out of sync with the Rust catalog after an app update; copy-paste of model ids from HuggingFace repo names instead of the app's catalog ids; mixing up whisper and parakeet command surfaces.
Related errors
- Parakeet model {} is not downloaded
- Model '{}' not found
- Parakeet engine not initialized
- Parakeet engine not initialized
- Failed to load Parakeet model {}: {}
AI-assisted analysis of Zackriya-Solutions/meetily@0281737d87 (2026-08-16).
Data as JSON: /api/errors/23bfa136fc9c87b4.
Report an issue: GitHub.