different-ai/openwork · error
Helper binary not found. Run pnpm dev to build it.
Error message
Helper binary not found. Run pnpm dev to build it.
What it means
openComputerUseSetupApp opens the macOS Computer Use permission setup GUI. It first tries shell.openPath on the bundled .app; if absent, it falls back to spawning the raw helper binary resolved by resolveComputerUseExecutable(). When neither the .app bundle nor the binary exists on disk, it throws this error, because the helper is built by the dev toolchain, not shipped inside the main app.
Source
Thrown at apps/desktop/electron/computer-use.mjs:154
resolve({ ok: false, apps: [] });
}
});
});
}
async function openComputerUseSetupApp() {
// Open the GUI. Use the .app bundle if available so macOS shows it as
// a real app with its own dock icon and permission identity.
const appPath = computerUseHelperAppPath();
if (appPath) {
const result = await shell.openPath(appPath);
if (result) console.error("[ComputerUse] shell.openPath error:", result);
return;
}
// Fallback: spawn the raw binary (opens the same GUI).
const bin = resolveComputerUseExecutable();
if (!bin) throw new Error("Helper binary not found. Run pnpm dev to build it.");
const child = spawn(bin, [], { detached: true, stdio: "ignore" });
child.unref();
}
export {
checkComputerUsePermissions,
getComputerUseMcpCommand,
listRunningApps,
openComputerUseSetupApp,
};
View on GitHub (pinned to 2b7df46e8a)
Solutions
- Run `pnpm dev` (or the repo's full build) so the Computer Use helper binary/bundle is produced before launching the app.
- Verify the helper exists at the path resolveComputerUseExecutable() computes (resources/helper dirs) and that the app is launched from the repo root or correct packaged layout.
- Re-run packaging so the helper is bundled with the app if the error occurs in production builds.
- Guard the call with existence checks and show the user a 'setup unavailable, rebuild the app' message instead of crashing.
Example fix
// before
openComputerUseSetupApp(); // throws if helper missing
// after
if (computerUseHelperAppPath() || resolveComputerUseExecutable()) {
await openComputerUseSetupApp();
} else {
console.error('Computer Use helper not built. Run pnpm dev first.');
} Defensive patterns
Strategy: fallback
Validate before calling
import { existsSync } from 'node:fs';
const bin = resolveComputerUseExecutable();
const appPath = computerUseHelperAppPath();
if (!appPath && !(bin && existsSync(bin))) {
console.error('Computer Use helper not built — run pnpm dev.');
} Type guard
function hasComputerUseHelper() {
return Boolean(computerUseHelperAppPath() || resolveComputerUseExecutable());
} Try / catch
try {
await openComputerUseSetupApp();
} catch (err) {
if (String(err.message).includes('Helper binary not found')) {
showDialog('Computer Use setup is unavailable. Rebuild the app (pnpm dev) and try again.');
} else throw err;
} Prevention
- Always run the full `pnpm dev` build before exercising Computer Use flows from source.
- Add a packaging check asserting the helper binary exists in the built app bundle.
- Fail fast at app boot with a warning if the helper is absent on macOS.
- Keep working directory and resource paths stable so resolveComputerUseExecutable() resolves correctly.
When it happens
Trigger: Calling openComputerUseSetupApp() on macOS when neither computerUseHelperAppPath() nor resolveComputerUseExecutable() resolves to an existing file — e.g. running the app from source before building the helper, a partial/cleaned build, or running a packaged build that omitted the helper.
Common situations: Developers cloning the repo and running the Electron app without running the full build first; CI packaging steps that skip the helper build; running the app from a non-default working directory so the helper path resolution fails.
Related errors
- macOS denied microphone access. Enable OpenWork in System Se
- Computer Use is Mac only and requires the OpenWork desktop a
- OpenWork Computer Use is missing from this OpenWork build.
- Cannot find OpenWork embedded server bundle. Checked: ${cand
- Failed to locate opencode.
AI-assisted analysis of different-ai/openwork@2b7df46e8a (2026-09-01).
Data as JSON: /api/errors/d77f384fd221cd9a.
Report an issue: GitHub.