stablyai/orca · critical

Missing Orca Computer Use helper app at ${helperAppPath}

Error message

Missing Orca Computer Use helper app at ${helperAppPath}

What it means

In the macOS afterPack signing step, `signMacComputerUseHelper` checks for 'Orca Computer Use.app' in the resources directory. If the file doesn't exist and this is a Mac release build (ORCA_MAC_RELEASE=1, or hourly/daily/adhoc channel), the build fails — the helper app is a required component that must be signed before Orca.app is sealed. Non-release builds silently return (line 552).

Source

Thrown at config/electron-builder.config.cjs:550

    return
  }
  const helperPaths = [
    join(resourcesDir, 'serve-sim', 'bin', 'serve-sim-bin'),
    join(resourcesDir, 'serve-sim', 'dist', 'simcam', 'serve-sim-camera-helper'),
    join(resourcesDir, 'node_modules', 'serve-sim', 'bin', 'serve-sim-bin'),
    join(resourcesDir, 'node_modules', 'serve-sim', 'dist', 'simcam', 'serve-sim-camera-helper')
  ]
  for (const helperPath of helperPaths) {
    if (existsSync(helperPath)) {
      chmodSync(helperPath, 0o755)
    }
  }
}

async function signMacComputerUseHelper(helperAppPath, packager) {
  if (!existsSync(helperAppPath)) {
    if (isMacRelease) {
      throw new Error(`Missing Orca Computer Use helper app at ${helperAppPath}`)
    }
    return
  }
  const codeSigningInfo =
    isMacRelease && process.env.CSC_LINK && packager?.codeSigningInfo?.value
      ? await packager.codeSigningInfo.value
      : null
  const identity =
    process.env.ORCA_COMPUTER_MACOS_SIGN_IDENTITY ??
    process.env.CSC_NAME ??
    findInstalledMacSigningIdentity(codeSigningInfo?.keychainFile) ??
    (isMacRelease ? null : '-')
  if (!identity) {
    throw new Error('Missing signing identity for Orca Computer Use helper app')
  }
  // Why: TCC grants attach to this nested app's code identity. Sign it before
  // the outer Orca.app is sealed so production builds preserve that identity.
  execFileSync('codesign', codesignArgs(identity, helperAppPath), { stdio: 'inherit' })

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Build the computer-use helper first: run the native build for `native/computer-use-macos` to produce `.build/release/Orca Computer Use.app`.
  2. Verify the extraResources mapping at electron-builder.config.cjs:390 — the `from` path `native/computer-use-macos/.build/release/Orca Computer Use.app` must match the actual build output.
  3. If this is a local non-release build, set ORCA_MAC_RELEASE unset (or not 1) so the guard silently skips signing — but note the helper still won't be signed.
  4. Check CI pipeline ordering: native builds must complete before the electron-builder packaging step.
Defensive patterns

Strategy: validation

Validate before calling

// Verify the helper app exists before packaging
import { existsSync } from 'fs'
function assertComputerUseHelperExists() {
  const helperPath = 'native/computer-use-macos/.build/release/Orca Computer Use.app'
  if (!existsSync(helperPath)) {
    throw new Error(`Build the helper first: cd native/computer-use-macos && cargo build --release`)
  }
}

Prevention

When it happens

Trigger: The native/computer-use-macos build step (a Rust/Swift project compiled separately) did not produce 'Orca Computer Use.app' before electron-builder ran. The extraResources mapping for the helper app (line 390-392) has a wrong `from` path. Building on a machine without the native build toolchain. The .build/release output directory doesn't exist because `cargo build --release` wasn't run.

Common situations: Running electron-builder without first building the native computer-use helper. CI pipeline step ordering — the native build must complete before packaging. A clean checkout where the native build artifacts haven't been generated. Changing the native project's output path or product name.

Related errors


AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12). Data as JSON: /api/errors/a487eca528c7ba95. Report an issue: GitHub.