tinyhumansai/openhuman · error · Error
Model test RPC returned no result for
Error message
Model test RPC returned no result for ${workload} via ${provider} (openhuman.inference_test_provider_model). What it means
Thrown by testProviderModel() after the core RPC 'openhuman.inference_test_provider_model' resolves but the result envelope carries no result object (res.result is null/undefined). Unlike a thrown RPC error, this means the core answered successfully with an empty payload — typically a version skew where the deployed core does not actually implement/return the test result shape the UI expects, or a handler that swallowed its own failure and returned void.
Solutions
- Restart the core (Settings > Restart Core / restartCoreProcess()) so the app and core versions match, then retest.
- Check GET /schema on the running core to confirm inference_test_provider_model exists and inspect its declared return type.
- Look at core logs for the provider test execution — a provider-side timeout/HTTP failure may be returning an empty success.
- If using OPENHUMAN_CORE_REUSE_EXISTING=1 or a remote core, ensure it is built from the same commit as the UI.
Example fix
// before
const res = await callCoreRpc<{ result: ProviderModelTestResult }>({ ... });
if (!res?.result) {
throw new Error(`Model test RPC returned no result for ${workload} via ${provider} (openhuman.inference_test_provider_model).`);
}
// after — distinguish empty result from version skew and guide the user
if (!res?.result) {
throw new Error(
`Model test RPC returned no result for ${workload} via ${provider}. ` +
'The running core may be older than the app — restart Core from Settings and retry.'
);
} Defensive patterns
Strategy: try-catch
Validate before calling
import { callCoreRpc } from '../coreRpcClient';
async function coreSupportsProviderModelTest(): Promise<boolean> {
try {
const schema = await callCoreRpc<{ methods?: unknown }>({ method: 'openhuman.', params: {} }).catch(() => null);
// more reliably: GET /schema on the core and check for inference_test_provider_model
return Boolean(schema);
} catch {
return false;
}
} Type guard
function isProviderModelTestResult(v: unknown): v is ProviderModelTestResult {
return Boolean(v) && typeof v === 'object';
} Try / catch
try {
return await testProviderModel(workload, provider);
} catch (e) {
if (e instanceof Error && e.message.startsWith('Model test RPC returned no result')) {
return { ok: false, error: 'Core may be outdated — restart Core and retry.' } as ProviderModelTestResult;
}
throw e;
} Prevention
- Keep core and UI versions aligned; restart the core after app updates.
- Treat an empty success envelope as a version-skew signal and check /schema.
- Degrade the settings UI to 'test unavailable' instead of a hard error.
When it happens
Trigger: UI and openhuman-core of different versions (older core without the provider-test handler returning ProviderModelTestResult); an external/standalone core via OPENHUMAN_CORE_REUSE_EXISTING=1 that is stale; a handler code path that returns Ok(None)-equivalent on internal failure.
Common situations: After updating the app but the core process did not restart (cached core still running); pointing the app at a docker/cloud core built from an older branch; a core crash mid-test that still emitted a JSON-RPC success envelope.
Related errors
- Discord link start response missing required string field…
- Local model runtime is unavailable in this core build…
- MISSING_ARTIFACT_PATH
- OPENAI_CODEX_OAUTH_MISSING_AUTH_URL
- provider_surfaces_list_queue: unexpected empty response
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/828744b5c1e52480.
Report an issue: GitHub.
Appendix: 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 7491200858)