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.
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
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
- 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)
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
- Retry failed for
- {}: {}
- Failed to read chunk
- Failed to start download
- Can only delete corrupted or available Parakeet models…
AI-assisted analysis of Zackriya-Solutions/meetily@a2cb62e827 (2026-09-12).
Data as JSON: /api/errors/11585f570b6b8938.
Report an issue: GitHub.
Appendix: source
Thrown at frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs:708
async fn send_download_request(
&self,
client: &reqwest::Client,
file_url: &str,
range_start: Option<u64>,
active_download: &ActiveDownload,
) -> Result<reqwest::Response> {
let mut request = client.get(file_url);
if let Some(range_start) = range_start {
request = request.header(reqwest::header::RANGE, format!("bytes={range_start}-"));
}
tokio::select! {
biased;
_ = active_download.cancellation.cancelled() => Err(DownloadCancelled.into()),
response = request.send() => response
.map_err(|error| anyhow!("Failed to start download for {}: {}", file_url, error)),
}
}
fn declared_content_length(response: &reqwest::Response) -> Result<Option<u64>> {
response
.headers()
.get(reqwest::header::CONTENT_LENGTH)
.map(|value| {
value
.to_str()
.map_err(|error| anyhow!("Invalid Content-Length header encoding: {}", error))?
.parse()
.map_err(|error| anyhow!("Invalid Content-Length header: {}", error))
})
.transpose()
}
fn validate_full_response(response: &reqwest::Response, exact_bytes: u64) -> Result<()> {View on GitHub (pinned to a2cb62e827)