{"record":{"id":"ddb87f221dadc76e","repo":"cjpais/Handy","slug":"failed-to-load-parakeet-model","errorCode":null,"errorMessage":"Failed to load parakeet model {}: {}","messagePattern":"Failed to load parakeet model (.+?): (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src-tauri/src/managers/transcription.rs","lineNumber":619,"sourceCode":"                    \"Loaded whisper model '{}' (requested {:?}, gpu_device {}, bound backend '{}', \\\n                     supports_streaming={}, supports_translate={}, supports_language_detect={})\",\n                    model_id,\n                    backend,\n                    gpu_device,\n                    bound_backend,\n                    caps.supports_streaming,\n                    caps.supports_translate,\n                    caps.supports_language_detect\n                );\n                LoadedEngine::TranscribeCpp(session)\n            }\n            EngineType::Parakeet => {\n                let engine =\n                    ParakeetModel::load(&model_path, &Quantization::Int8).map_err(|e| {\n                        let error_msg =\n                            format!(\"Failed to load parakeet model {}: {}\", model_id, e);\n                        emit_loading_failed(&error_msg);\n                        anyhow::anyhow!(error_msg)\n                    })?;\n                LoadedEngine::Parakeet(engine)\n            }\n            EngineType::Moonshine => {\n                let engine = MoonshineModel::load(\n                    &model_path,\n                    MoonshineVariant::Base,\n                    &Quantization::default(),\n                )\n                .map_err(|e| {\n                    let error_msg = format!(\"Failed to load moonshine model {}: {}\", model_id, e);\n                    emit_loading_failed(&error_msg);\n                    anyhow::anyhow!(error_msg)\n                })?;\n                LoadedEngine::Moonshine(engine)\n            }\n            EngineType::MoonshineStreaming => {\n                let engine = StreamingModel::load(&model_path, 0, &Quantization::default())","sourceCodeStart":601,"sourceCodeEnd":637,"githubUrl":"https://github.com/cjpais/Handy/blob/98a4d80cce8ad41efec2a419b59d9e81229a35d7/src-tauri/src/managers/transcription.rs#L601-L637","documentation":"The Parakeet engine path: transcribe-rs ParakeetModel::load on the model directory with Int8 quantization failed. Parakeet is a directory-based ONNX model, so failures usually mean incomplete directory contents (missing .onnx or config files), a corrupted payload, or an ONNX runtime/provider problem on this machine. The embedded inner error carries the underlying cause.","triggerScenarios":"The directory model is incomplete — download interrupted after directory creation but before all files were written and verified; the ONNX runtime libraries are missing or incompatible on the platform; a corrupted .onnx payload; the files present do not match the Int8 quantization path.","commonSituations":"Manual copies of the parakeet directory missing tokenizer/config files; interrupted first download leaving a partial directory; unusual Linux distributions lacking expected ONNX runtime dependencies.","solutions":["Re-download the model: delete_model(model_id) + download_model(model_id) to obtain a verified complete directory","Verify the directory contains all expected files and that no <filename>.partial marker remains, then retry","Update Handy — the ONNX runtime is bundled, and updates fix provider issues","Collect the embedded inner error from logs and report it if a re-download does not help"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Directory-based ONNX model: check the expected files exist before loading\nfn parakeet_dir_complete(mm: &ModelManager, filename: &str) -> bool {\n    let dir = mm.models_dir.join(filename);\n    let partial = mm.models_dir.join(format!(\"{}.partial\", filename));\n    dir.is_dir()\n        && !partial.exists()\n        && dir.join(\"model.onnx\").is_file() // adjust to the expected file set\n}","typeGuard":null,"tryCatchPattern":"match transcription_manager.load_model(model_id.clone()).await {\n    Ok(()) => Ok(()),\n    Err(e) if e.to_string().starts_with(\"Failed to load parakeet model\") => {\n        // directory contents are suspect: re-download verified bytes, retry once\n        model_manager.delete_model(&model_id)?;\n        model_manager.download_model(&model_id).await?;\n        transcription_manager.load_model(model_id.clone()).await\n    }\n    Err(e) => Err(e),\n}","preventionTips":["Never hand-copy partial ONNX model directories — always download through the manager","Check for a leftover .partial marker before loading directory models","Report the embedded ONNX error when a verified re-download still fails to load"],"tags":["parakeet","onnx","transcribe-rs","model-loading"],"backgroundTag":"onnx-model-load-failed","analyzedSha":"98a4d80cce8ad41efec2a419b59d9e81229a35d7","analyzedAt":"2026-08-16T20:58:09.966Z","schemaVersion":2},"datasetVersion":"2026-08-16T23:17:17.608Z"}