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

llama-helper binary not found. Build with 'cd llama-helper &

Error message

llama-helper binary not found. Build with 'cd llama-helper && cargo build --release' or set MEETILY_LLAMA_HELPER env var.

What it means

The summary engine could not locate the llama-helper sidecar binary anywhere: not at MEETILY_LLAMA_HELPER, not under RESOURCE_DIR (bundled resources), and not at target/{release,debug}/llama-helper[.exe] derived from the workspace root. Local summary generation is impossible until the binary exists.

Source

Thrown at frontend/src-tauri/src/summary/summary_engine/sidecar.rs:257

                .ok_or_else(|| anyhow!("Failed to determine project root"))?
                .to_path_buf();

            let candidates = vec![
                project_root.join("target/release/llama-helper"),
                project_root.join("target/debug/llama-helper"),
                project_root.join("target/release/llama-helper.exe"),
                project_root.join("target/debug/llama-helper.exe"),
            ];

            for candidate in candidates {
                if candidate.exists() {
                    log::info!("Using dev llama-helper: {}", candidate.display());
                    return Ok(candidate);
                }
            }
        }

        Err(anyhow!(
            "llama-helper binary not found. Build with 'cd llama-helper && cargo build --release' or set MEETILY_LLAMA_HELPER env var."
        ))
    }

    /// Ensure sidecar is running, spawn if needed
    pub async fn ensure_running(&self, model_path: PathBuf) -> Result<()> {
        // Check if already running with correct model
        {
            let current_model = self.current_model_path.read().await;
            if current_model.as_ref() == Some(&model_path) && self.is_healthy() {
                log::debug!("Sidecar already running with correct model");
                self.update_activity().await;
                return Ok(());
            }
        }

        // Need to spawn or restart
        self.spawn(model_path).await

View on GitHub (pinned to 0281737d87)

Solutions

  1. Build it: cd llama-helper && cargo build --release, then restart so dev path detection finds target/release/llama-helper
  2. Or set MEETILY_LLAMA_HELPER=/absolute/path/to/llama-helper pointing at an existing binary
  3. For packaged builds, declare llama-helper in tauri.conf.json externalBin/resources so the RESOURCE_DIR lookup succeeds
  4. Check the binary name matches the platform (llama-helper vs llama-helper.exe) and the executable bit is set on Unix
Defensive patterns

Strategy: validation

Validate before calling

// Startup gate before any summary feature is offered
let helper = find_helper_binary()?;
if !helper.exists() {
    return Err(anyhow!("llama-helper missing at {:?} - run: cd llama-helper && cargo build --release", helper));
}

Type guard

fn sidecar_available(path: &Path) -> bool {
    path.is_file()
}

Try / catch

try { LlamaHelper::new(model_path).await? }
catch (e) if e.to_string().contains("llama-helper binary not found") {
    // disable local summaries, show setup instructions, keep remote providers (Claude/Groq) usable
    disable_local_summary_with_setup_instructions();
}

Prevention

When it happens

Trigger: Fresh dev checkout where the llama-helper crate was never built; a production package that did not bundle the helper as a Tauri resource; platform suffix mismatch (binary named llama-helper.exe looked for without .exe, or vice versa); the app bundle moved away from its resources directory.

Common situations: First run after clone (building only the app crate does not build the helper unless the workspace is configured), CI/release pipelines missing the sidecar in tauri resources, running the packaged binary standalone without its resource layout.

Related errors


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