Zackriya-Solutions/meetily · error
Sidecar error: {}
Error message
Sidecar error: {} What it means
The sidecar replied with a top-level Error message instead of a Response — the request was rejected before generation started. This is transport/protocol level: a model the sidecar has not loaded, a request shape the sidecar version does not understand, or a request racing against graceful shutdown of the manager.
Source
Thrown at frontend/src-tauri/src/summary/summary_engine/client.rs:244
if token.is_cancelled() {
return Err(anyhow!("Generation cancelled"));
}
}
// Parse response
let response: Response = serde_json::from_str(&response_json)
.with_context(|| format!("Failed to parse response: {}", response_json))?;
match response {
Response::Response { text, error } => {
if let Some(err_msg) = error {
Err(anyhow!("Generation failed: {}", err_msg))
} else {
log::info!("Generation completed: {} chars", text.len());
Ok(text)
}
}
Response::Error { message } => Err(anyhow!("Sidecar error: {}", message)),
}
}
/// Shutdown the global sidecar (graceful cleanup)
/// Detaches the current manager and spawns a background task to drain active requests
pub async fn shutdown_sidecar_gracefully() -> Result<()> {
let manager_opt = {
let mut global_manager = SIDECAR_MANAGER.lock().await;
global_manager.take()
};
if let Some(manager) = manager_opt {
log::info!("Detaching sidecar manager for graceful shutdown");
// Spawn background task to wait for active requests and then kill
tokio::spawn(async move {
if let Err(e) = manager.shutdown_gracefully().await {
log::error!("Error during graceful shutdown: {}", e);View on GitHub (pinned to 0281737d87)
Solutions
- Retry once after confirming the model is fully downloaded and the sidecar initialized with it
- Restart the app (or force sidecar re-init) so manager and sidecar versions match
- Check sidecar logs in the terminal/Developer console for the exact rejection reason
- Check app lifecycle state before issuing generation to avoid firing during shutdown
Defensive patterns
Strategy: fallback
Try / catch
match generate_builtin(...).await {
Err(e) if e.to_string().starts_with("Sidecar error") => {
// Request rejected pre-inference: reset sidecar, or fall back to an external provider
shutdown_sidecar_gracefully().await.ok();
generate_builtin(...).await // re-initializes a fresh sidecar
}
other => other,
} Prevention
- Do not issue generation during app shutdown; check lifecycle state first
- After app updates, recreate the sidecar manager so binary and manager versions match
- Log sidecar stderr — top-level Error messages usually identify the rejected field
When it happens
Trigger: Sending a model name the sidecar has not loaded; version skew between the manager and the sidecar binary after an app update; issuing a request during shutdown_sidecar_gracefully while active requests are being drained; the sidecar restarting underneath the manager.
Common situations: App update replaced the sidecar binary while an old manager instance persists; user closes the window as generation fires; race between download completion and sidecar model registration.
Related errors
- Generation failed: {}
- Model file not found: {}. Please download the model '{}' fir
- Unknown model: {}
- Decode task join error: {}
- Resample task join error: {}
AI-assisted analysis of Zackriya-Solutions/meetily@0281737d87 (2026-08-16).
Data as JSON: /api/errors/af1dea351d00c7cb.
Report an issue: GitHub.