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

  1. On darwin: run `pnpm build:computer-macos` (or reinstall) so the macOS provider registers; see also error 960/961.
  2. On linux/win32: ensure the platform runtime file is present in the packaged tree (app.asar.unpacked/out) — reinstall if missing.
  3. Gate computer-use in the UI on whether a provider is available (call callComputerSidecarCapabilities and handle unsupported_capability).
  4. 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

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


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