{"record":{"id":"f5bb8b427849a4ed","repo":"tinyhumansai/openhuman","slug":"localaistep-local-ai-bootstrap-failed","errorCode":null,"errorMessage":"[LocalAIStep] Local AI bootstrap failed:","messagePattern":"\\[LocalAIStep\\] Local AI bootstrap failed:","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/src/pages/onboarding/steps/LocalAIStep.tsx","lineNumber":47,"sourceCode":"          setRecommendDisabled(presets.recommend_disabled ?? false);\n        }\n      })\n      .catch(() => {\n        if (!cancelled) setRecommendDisabled(false);\n      });\n    return () => {\n      cancelled = true;\n    };\n  }, []);\n\n  const handleConsent = useCallback(() => {\n    if (downloadStartedRef.current) return;\n    downloadStartedRef.current = true;\n    console.debug('[LocalAIStep] starting background Local AI bootstrap after consent');\n\n    // Fire-and-forget: start bootstrap in the background — the global snackbar tracks progress.\n    void bootstrapLocalAiWithRecommendedPreset(false, '[LocalAIStep]').catch((err: unknown) => {\n      console.warn('[LocalAIStep] Local AI bootstrap failed:', err);\n      onDownloadError?.(t('onboarding.localAI.setupIssue'));\n    });\n\n    // Advance to next step immediately\n    onNext({ consentGiven: true, downloadStarted: true });\n  }, [onNext, onDownloadError, t]);\n\n  const handleSkip = useCallback(() => {\n    console.debug('[LocalAIStep] skipping local AI — using cloud fallback');\n    onNext({ consentGiven: false, downloadStarted: false });\n  }, [onNext]);\n\n  // Still probing device — show nothing yet.\n  if (recommendDisabled === null) {\n    return null;\n  }\n\n  // Low-RAM device: show cloud fallback option as the primary path.","sourceCodeStart":29,"sourceCodeEnd":65,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/app/src/pages/onboarding/steps/LocalAIStep.tsx#L29-L65","documentation":"The background Local AI bootstrap failed after the onboarding consent click. bootstrapLocalAiWithRecommendedPreset is deliberately fire-and-forget (the global snackbar tracks progress), so this warn records that the model download/setup errored rather than crashing the step — Local AI remains unavailable and inference falls back to cloud providers until a bootstrap succeeds.","triggerScenarios":"Thrown at app/src/pages/onboarding/steps/LocalAIStep.tsx:47 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the snackbar/error surface for the bootstrap's failure detail (download failure, disk space, checksum)","Retry via the Local AI settings action once the cause is fixed — consent is remembered, so no re-consent needed","Verify network access to the model artifact host and free disk space in the models directory","Cloud inference continues to work regardless; Local AI can be retried later"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}