different-ai/openwork · critical
OpenWork Computer Use is missing from this OpenWork build.
Error message
OpenWork Computer Use is missing from this OpenWork build.
What it means
getComputerUseMcpCommand locates the bundled Computer Use helper executable; in a packaged (production) build with no helper binary present, it throws this error instead of silently degrading. Dev builds fall back to local/npx paths, but packaged builds require the shipped helper.
Source
Thrown at apps/desktop/electron/computer-use.mjs:44
}
function computerUseHelperAppPath() {
const explicitApp = process.env.OPENWORK_COMPUTER_USE_APP?.trim();
const candidates = [
explicitApp,
process.resourcesPath ? path.join(process.resourcesPath, "helpers", COMPUTER_USE_HELPER_APP_NAME) : null,
path.resolve(__dirname, "..", "resources", "helpers", COMPUTER_USE_HELPER_APP_NAME),
].filter(Boolean);
return candidates.find((candidate) => existsSync(candidate)) ?? null;
}
function getComputerUseMcpCommand() {
const helperExecutable = computerUseHelperExecutablePath();
if (helperExecutable) return [helperExecutable, "mcp"];
if (app.isPackaged) {
throw new Error("OpenWork Computer Use is missing from this OpenWork build.");
}
if (process.env.OPENWORK_DEV_MODE === "1") {
return ["node", path.resolve(__dirname, "../../..", "packages/handsfree/bin/openwork-handsfree-computer-use.mjs"), "mcp"];
}
return ["npx", "-y", "@openwork/handsfree", "mcp"];
}
// ---------------------------------------------------------------------------
// Permission checks — spawn the binary with --check, read stdout, done.
// Fresh process = fresh TCC read = always accurate. No HTTP server needed.
// ---------------------------------------------------------------------------
function resolveComputerUseExecutable() {
// 1. Explicit env override.
const explicit = process.env.OPENWORK_COMPUTER_USE_BINARY?.trim();
if (explicit && existsSync(explicit)) return explicit;
View on GitHub (pinned to 2b7df46e8a)
Solutions
- Reinstall/repair the full OpenWork build so the Computer Use helper ships with the app
- Verify packaging config includes the handsfree/computer-use helper executable (extraResources/asarUnpack)
- Run in dev (OPENWORK_DEV_MODE=1) which falls back to packages/handsfree/bin or npx @openwork/handsfree
- Check antivirus/quarantine logs if the helper existed but cannot be found at runtime
Example fix
// packaging config (electron-builder)
// before
extraResources: []
// after
extraResources: [{ from: 'packages/handsfree/bin', to: 'helpers/handsfree' }] Defensive patterns
Strategy: try-catch
Validate before calling
// in main process, before launching computer use
import { app } from 'electron';
if (app.isPackaged && typeof computerUseHelperExecutablePath !== 'function') {
console.warn('Computer Use helper unavailable in this build');
}
// or verify presence
// fs.existsSync(helperPath) check where the build installs it Type guard
function computerUseAvailable(isPackaged, helperPath) { return !isPackaged || Boolean(helperPath); } Try / catch
try {
const cmd = getComputerUseMcpCommand();
} catch (e) {
if (e.message.includes('Computer Use is missing from this OpenWork build')) {
// disable the Computer Use feature and inform the user to install the full build
} else throw e;
} Prevention
- Install the complete packaged build that ships the Computer Use helper
- Verify packaging config includes the helper under extraResources/asarUnpack
- Gate the Computer Use UI on helper availability instead of failing at invocation
- Set OPENWORK_DEV_MODE=1 in dev environments to use the local/npx fallback
When it happens
Trigger: Launching Computer Use MCP from a packaged OpenWork install where computerUseHelperExecutablePath() returns null — e.g. a partial/incomplete build, an installer variant that omits the helper, or packaging config that failed to include the helper binary.
Common situations: Installing a trimmed/open-source build without the proprietary helper; antivirus quarantining the helper executable; ASAR packaging excluding the binary; upgrading and the helper path changing while stale code looks in the old location.
Related errors
- Cannot find OpenWork embedded server bundle. Checked: ${cand
- Failed to locate opencode.
- Electron desktop helper is unavailable: ${command}
- Electron desktop helper is unavailable: ${prop}
- Failed to open browser
AI-assisted analysis of different-ai/openwork@2b7df46e8a (2026-09-01).
Data as JSON: /api/errors/af6d6a7ceb575edd.
Report an issue: GitHub.