tinyhumansai/openhuman · error

Model test RPC returned no result for ${workload} via ${prov

Error message

Model test RPC returned no result for ${workload} via ${provider} (openhuman.inference_test_provider_model).

What it means

testProviderModel got a response from openhuman.inference_test_provider_model but res.result was null/undefined — the envelope has no result object to read workload/provider outcome from. This is a protocol-shape mismatch, not a failed inference: the RPC layer answered, the payload did not match the expected { result: ProviderModelTestResult } shape.

Source

Thrown at app/src/services/api/aiSettingsApi.ts:818

  });
  return res?.result?.errors ?? [];
}

export async function testProviderModel(
  workload: WorkloadId,
  provider: string,
  prompt = 'Hello world'
): Promise<ProviderModelTestResult> {
  if (!isTauri()) {
    throw new Error('Model testing is only available in the desktop app.');
  }
  const res = await callCoreRpc<{ result: ProviderModelTestResult }>({
    method: 'openhuman.inference_test_provider_model',
    params: { workload, provider, prompt },
    timeoutMs: PROVIDER_MODEL_TEST_TIMEOUT_MS,
  });
  if (!res?.result) {
    throw new Error(
      `Model test RPC returned no result for ${workload} via ${provider} (openhuman.inference_test_provider_model).`
    );
  }
  return res.result;
}

// ─── Local provider façade (Ollama install / detect / model manage) ───────

/** Snapshot of the Ollama daemon + installed-model state for the AI panel. */
export interface LocalProviderSnapshot {
  status: LocalAiStatus | null;
  diagnostics: LocalAiDiagnostics | null;
  presets: PresetsResponse | null;
  installedModels: InstalledModelInfo[];
}

export async function loadLocalProviderSnapshot(): Promise<LocalProviderSnapshot> {
  const [statusRes, diag, presets] = await Promise.all([

View on GitHub (pinned to a221052e0d)

Solutions

  1. Restart the desktop app / core process so the bundled core matches the frontend
  2. If using OPENHUMAN_CORE_REUSE_EXISTING, clear it and let the fresh core spawn, then retest
  3. Check the core-side handler for inference_test_provider_model (what it returns on skip/failure) in logs
  4. Catch the error and show 'model test unavailable in this build' rather than a raw stack

Example fix

// before
const r = await testProviderModel(workload, provider);
setOutcome(r);

// after
try {
  const r = await testProviderModel(workload, provider);
  setOutcome(r);
} catch (e) {
  setOutcome({ error: 'Model test unavailable — restart the app and try again.' });
}
Defensive patterns

Strategy: try-catch

Type guard

const hasResult = <T>(r: unknown): r is { result: T } =>
  typeof r === 'object' && r !== null && 'result' in r && (r as { result: unknown }).result != null;

Try / catch

try { const r = await testProviderModel(workload, provider); setOutcome(r); }
catch (e) { if (String(e.message).includes('no result')) { promptRestartCore('Model test unavailable — restart the app.'); } else throw e; }

Prevention

When it happens

Trigger: A core version whose handler returns {} or a differently-named envelope for inference_test_provider_model; a proxy/mock returning an empty object; result explicitly nulled by the handler on some internal skip path.

Common situations: Version skew between an updated frontend and an older (or not-yet-restarted) embedded core; OPENHUMAN_CORE_REUSE_EXISTING=1 pinning an older core during development; mock backends that answer success without the result body.

Related errors


AI-assisted analysis of tinyhumansai/openhuman@a221052e0d (2026-08-16). Data as JSON: /api/errors/828744b5c1e52480. Report an issue: GitHub.