Zackriya-Solutions/meetily · error

Failed to start download for {}: {}

Error message

Failed to start download for {}: {}

What it means

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.

Source

Thrown at frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs:751

                    filename,
                    existing_size as f64 / 1_048_576.0,
                    expected_size as f64 / 1_048_576.0
                );
                continue;
            }

            log::info!("Downloading file {}/{}: {} (resuming from {} bytes)", index + 1, total_files, filename, existing_size);

            // Build request with optional Range header for resume
            let mut request = client.get(&file_url);
            if existing_size > 0 {
                request = request.header("Range", format!("bytes={}-", existing_size));
                log::info!("Resuming download from byte {}", existing_size);
            }

            let mut response = request.send().await
                .map_err(|e| {
                    anyhow!("Failed to start download for {}: {}", filename, e)
                })?;

            // Handle response status
            let (file_total_size, resuming) = if response.status() == reqwest::StatusCode::PARTIAL_CONTENT {
                // Server supports resume, get remaining size
                let remaining = response.content_length().unwrap_or(0);
                log::info!("Server supports resume, remaining: {} bytes", remaining);
                (existing_size + remaining, true)
            } else if response.status().is_success() {
                // Fresh download or server doesn't support resume
                if existing_size > 0 {
                    log::warn!("Server doesn't support resume for {}, starting fresh download", filename);
                }
                (response.content_length().unwrap_or(0), false)
            } else if response.status() == reqwest::StatusCode::RANGE_NOT_SATISFIABLE {
                // 416: Range not satisfiable - file complete or invalid range
                log::warn!("Server returned 416 Range Not Satisfiable for {}", filename);

View on GitHub (pinned to 0281737d87)

Solutions

  1. Verify basic connectivity to the exact host: curl -I https://huggingface.co/... or https://meetily.towardsgeneralintelligence.com/... from the same machine
  2. Check VPN/proxy/firewall settings and whitelist the download host
  3. Fix DNS or switch networks, then retry - the engine removes the active-download entry and resumes partial files on the next attempt
  4. If HuggingFace is unreachable long-term, prefer the v3 model which is served from the meetily mirror instead
Defensive patterns

Strategy: retry

Validate before calling

// Cheap preflight before a long download: can we reach the host at all?
// (v2 -> huggingface.co, v3 -> meetily.towardsgeneralintelligence.com)
let host = if name.contains("-v2-") { "https://huggingface.co" } else { "https://meetily.towardsgeneralintelligence.com" };
if reqwest::get(host).await.is_err() {
    anyhow::bail!("cannot reach {host} - check network/proxy before downloading");
}

Try / catch

// Retry with backoff - transport failures are usually transient; the engine resumes partial files
let mut attempt = 0;
loop {
    match engine.download_model(name, None).await {
        Ok(()) => break,
        Err(e) if e.to_string().contains("Failed to start download") && attempt < 3 => {
            attempt += 1;
            tokio::time::sleep(std::time::Duration::from_secs(5 * attempt as u64)).await;
        }
        Err(e) => return Err(e),
    }
}

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of Zackriya-Solutions/meetily@0281737d87 (2026-08-16). Data as JSON: /api/errors/11585f570b6b8938. Report an issue: GitHub.