{"record":{"id":"11585f570b6b8938","repo":"Zackriya-Solutions/meetily","slug":"failed-to-start-download-for","errorCode":null,"errorMessage":"Failed to start download for {}: {}","messagePattern":"Failed to start download for (.+?): (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs","lineNumber":708,"sourceCode":"\n\n    async fn send_download_request(\n        &self,\n        client: &reqwest::Client,\n        file_url: &str,\n        range_start: Option<u64>,\n        active_download: &ActiveDownload,\n    ) -> Result<reqwest::Response> {\n        let mut request = client.get(file_url);\n        if let Some(range_start) = range_start {\n            request = request.header(reqwest::header::RANGE, format!(\"bytes={range_start}-\"));\n        }\n\n        tokio::select! {\n            biased;\n            _ = active_download.cancellation.cancelled() => Err(DownloadCancelled.into()),\n            response = request.send() => response\n                .map_err(|error| anyhow!(\"Failed to start download for {}: {}\", file_url, error)),\n        }\n    }\n\n    fn declared_content_length(response: &reqwest::Response) -> Result<Option<u64>> {\n        response\n            .headers()\n            .get(reqwest::header::CONTENT_LENGTH)\n            .map(|value| {\n                value\n                    .to_str()\n                    .map_err(|error| anyhow!(\"Invalid Content-Length header encoding: {}\", error))?\n                    .parse()\n                    .map_err(|error| anyhow!(\"Invalid Content-Length header: {}\", error))\n            })\n            .transpose()\n    }\n\n    fn validate_full_response(response: &reqwest::Response, exact_bytes: u64) -> Result<()> {","sourceCodeStart":690,"sourceCodeEnd":726,"githubUrl":"https://github.com/Zackriya-Solutions/meetily/blob/a2cb62e827da7ef59f65064c97233efb2313878e/frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs#L690-L726","documentation":"Returned by download_model_detailed when the initial client.get(file_url).send() fails at the transport level (no HTTP status was received). file_url points at huggingface.co/istupakov/parakeet-tdt-0.6b-v2-onnx/resolve/main/<file> for v2 models or meetily.towardsgeneralintelligence.com/models/parakeet-tdt-0.6b-v3-onnx/<file> for v3, so this is DNS resolution, connection, TLS, or proxy failure for those hosts.","triggerScenarios":"Machine offline or DNS cannot resolve huggingface.co / meetily.towardsgeneralintelligence.com; firewall or corporate proxy blocks the host; TLS interception with an untrusted CA breaks the handshake; the 30-second connect_timeout expires on a saturated link.","commonSituations":"Airplane mode/VPN dropped mid-flow; corporate egress filtering blocks file-hosting/CDN domains; captive portal intercepting the first request; regional network issues reaching HuggingFace CDN.","solutions":["Verify basic connectivity to the exact host: curl -I https://huggingface.co/... or https://meetily.towardsgeneralintelligence.com/... from the same machine","Check VPN/proxy/firewall settings and whitelist the download host","Fix DNS or switch networks, then retry - the engine removes the active-download entry and resumes partial files on the next attempt","If HuggingFace is unreachable long-term, prefer the v3 model which is served from the meetily mirror instead"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Cheap preflight before a long download: can we reach the host at all?\n// (v2 -> huggingface.co, v3 -> meetily.towardsgeneralintelligence.com)\nlet host = if name.contains(\"-v2-\") { \"https://huggingface.co\" } else { \"https://meetily.towardsgeneralintelligence.com\" };\nif reqwest::get(host).await.is_err() {\n    anyhow::bail!(\"cannot reach {host} - check network/proxy before downloading\");\n}","typeGuard":null,"tryCatchPattern":"// Retry with backoff - transport failures are usually transient; the engine resumes partial files\nlet mut attempt = 0;\nloop {\n    match engine.download_model(name, None).await {\n        Ok(()) => break,\n        Err(e) if e.to_string().contains(\"Failed to start download\") && attempt < 3 => {\n            attempt += 1;\n            tokio::time::sleep(std::time::Duration::from_secs(5 * attempt as u64)).await;\n        }\n        Err(e) => return Err(e),\n    }\n}","preventionTips":["Confirm the machine is online and DNS resolves the download host before large downloads","Whitelist huggingface.co and meetily.towardsgeneralintelligence.com on firewalls/proxies","Prefer the v3 model if HuggingFace is unreachable in your region (it uses the meetily mirror)"],"tags":["parakeet","network","reqwest","download","firewall"],"backgroundTag":"network-request-failed","analyzedSha":"a2cb62e827da7ef59f65064c97233efb2313878e","analyzedAt":"2026-09-12T11:12:14.152Z","contentChangedAt":"2026-09-12T11:12:14.152Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}