stablyai/orca · error · RuntimeClientError
unsupported_capability
unsupported_capability
Error message
{computerProviderUnavailableMessage(process.platform)} What it means
sidecar-entry.ts dispatch is the function the forked child runs. currentComputerProvider() returns the platform provider registered by computer-provider-lifecycle; if none registered, dispatch throws 'unsupported_capability' with computerProviderUnavailableMessage(platform). On darwin that message explains the helper .app was not found or macOS is unsupported; on linux/win32 it says the platform runtime file is missing.
Source
Thrown at src/main/computer/sidecar-entry.ts:43
async function handleMessage(message: unknown): Promise<void> {
if (!isRequest(message)) {
return
}
try {
const result = await dispatch(message.method, message.params ?? {})
process.send?.({ id: message.id, ok: true, result })
} catch (error) {
const mapped = errorToResponse(error)
process.send?.({ id: message.id, ok: false, error: mapped })
}
}
async function dispatch(method: string, params: Record<string, unknown>): Promise<unknown> {
const provider = currentComputerProvider()
if (!provider) {
throw new RuntimeClientError(
'unsupported_capability',
computerProviderUnavailableMessage(process.platform)
)
}
switch (method) {
case 'capabilities': {
return await provider.capabilities()
}
case 'listApps': {
return await provider.listApps()
}
case 'listWindows': {
return await provider.listWindows(params)
}
case 'getAppState': {
return await provider.snapshot(params)
}View on GitHub (pinned to 1136503c6a)
Solutions
- On darwin: run `pnpm build:computer-macos` (or reinstall) so the macOS provider registers; see also error 960/961.
- On linux/win32: ensure the platform runtime file is present in the packaged tree (app.asar.unpacked/out) — reinstall if missing.
- Gate computer-use in the UI on whether a provider is available (call callComputerSidecarCapabilities and handle unsupported_capability).
- If you control the lifecycle, await provider registration before forking the sidecar.
Defensive patterns
Strategy: validation
Validate before calling
// call from the parent before any computer-use action
try {
const caps = await callComputerSidecarCapabilities()
// provider is registered; proceed
} catch (e) {
if (e instanceof RuntimeClientError && e.code === 'unsupported_capability') {
// no provider for this platform; surface setup hint
} else throw e
} Type guard
import { RuntimeClientError } from './runtime-client-error'
function isProviderUnavailable(e: unknown): e is RuntimeClientError {
return e instanceof RuntimeClientError && e.code === 'unsupported_capability'
} Try / catch
try {
await provider.dispatch(method, params)
} catch (e) {
if (isProviderUnavailable(e)) {
// platform has no provider; tell the user to install/build the runtime
} else throw e
} Prevention
- Build/install the platform runtime file (helper .app on macOS) before enabling computer-use.
- Gate the UI affordance on capabilities() so users on unsupported platforms never trigger this.
- In dev, ensure provider lifecycle registration completes before forking the sidecar.
When it happens
Trigger: The sidecar child was forked before any provider was registered (lifecycle race), the native helper binary/platform runtime file is missing, or the platform is unsupported and no provider exists at all.
Common situations: First computer-use call before provider registration completed; a packaged build missing the platform runtime file in app.asar.unpacked; running on an OS for which no provider ships (e.g. freebsd).
Related errors
- unsupported_capability
- provider_incompatible
- unsupported_capability
- accessibility_error
- invalid_argument
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/a5b87d71d4cfa9ca.
Report an issue: GitHub.