Zackriya-Solutions/meetily · error · anyhow::Error

Parakeet engine not initialized

Error message

Parakeet engine not initialized

What it means

The global PARAKEET_ENGINE static (Mutex<Option<Arc<ParakeetEngine>>>) is None. It is populated only by the Parakeet init Tauri command (parakeet_engine/commands.rs); get_or_init_parakeet reuses an existing engine but never constructs one, so retranscription with provider='parakeet' fails if that init never ran or failed.

Source

Thrown at frontend/src-tauri/src/audio/retranscription.rs:677

                    warn!("Error during Parakeet model discovery (continuing anyway): {}", discover_err);
                }

                match e.load_model(&target_model).await {
                    Ok(_) => {
                        info!("Parakeet model '{}' loaded successfully", target_model);
                        Ok(e)
                    }
                    Err(load_err) => {
                        error!("Failed to load Parakeet model '{}': {}", target_model, load_err);
                        Err(anyhow!("Failed to load Parakeet model '{}': {}", target_model, load_err))
                    }
                }
            } else {
                info!("Parakeet model '{}' already loaded", target_model);
                Ok(e)
            }
        }
        None => Err(anyhow!("Parakeet engine not initialized")),
    }
}

/// Get the configured Parakeet model name from the database
async fn get_configured_parakeet_model<R: Runtime>(app: &AppHandle<R>) -> Result<String> {
    debug!("Getting configured Parakeet model from database...");

    let app_state = app
        .try_state::<AppState>()
        .ok_or_else(|| {
            error!("App state not available");
            anyhow!("App state not available")
        })?;

    // Query the transcript settings from the database
    let result: Option<(String, String)> = sqlx::query_as(
        "SELECT provider, model FROM transcript_settings WHERE id = '1'"
    )

View on GitHub (pinned to 0281737d87)

Solutions

  1. Invoke the Parakeet engine init Tauri command before start_retranscription with provider='parakeet'.
  2. Or extend get_or_init_parakeet to lazily construct the engine when None, mirroring the init command.
  3. Check logs for a failed Parakeet engine initialization.
  4. Ensure the models directory is set before init.
Defensive patterns

Strategy: validation

Validate before calling

// Ensure the Parakeet engine exists before a parakeet-provider batch job
use crate::parakeet_engine::commands::PARAKEET_ENGINE;
let ready = PARAKEET_ENGINE.lock().unwrap_or_else(|e| e.into_inner()).is_some();
if !ready { invoke_parakeet_init(app).await?; }

Prevention

When it happens

Trigger: Frontend invokes start_retranscription with provider='parakeet' before the Parakeet engine was initialized; the app just restarted and the user retried immediately; the init command failed earlier (models dir error).

Common situations: User has only ever used Whisper and selects Parakeet in the retranscribe dialog for the first time; UI flow that skips Parakeet init; init failure swallowed at startup.

Related errors


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