tinyhumansai/openhuman · error

[DaemonLifecycle] Auto-start failed:

Error message

[DaemonLifecycle] Auto-start failed:

What it means

Auto-starting the daemon failed during the lifecycle hook's one-time auto-start attempt (status was 'disconnected', no recovery in flight, zero prior attempts): startDaemon either threw or returned a non-Running state. The handler increments the connection-attempts counter, which consumes one of the bounded MAX_RECONNECTION_ATTEMPTS before the exponential-backoff retry path takes over.

Source

Thrown at app/src/hooks/useDaemonLifecycle.ts:86

      latestLifecycleRef.current;

    if (!isTauri() || !isAutoStartEnabled || !isMountedRef.current) {
      return;
    }

    // Only auto-start if daemon is disconnected and not already recovering
    if (status === 'disconnected' && !isRecovering && connectionAttempts === 0) {
      console.log('[DaemonLifecycle] Attempting auto-start of daemon');

      try {
        setIsRecovering(uid, true);
        const result = await startDaemon();

        if (result?.result && result.result.state === 'Running') {
          console.log('[DaemonLifecycle] Auto-start successful');
          resetConnectionAttempts(uid);
        } else {
          console.warn('[DaemonLifecycle] Auto-start failed:', result);
          incrementConnectionAttempts(uid);
        }
      } catch (error) {
        console.error('[DaemonLifecycle] Auto-start error:', error);
        incrementConnectionAttempts(uid);
      } finally {
        setIsRecovering(uid, false);
      }
    }
  }, []);

  // Retry connection with exponential backoff
  const scheduleRetry = useCallback(() => {
    const { connectionAttempts, status, isRecovering } = latestLifecycleRef.current;

    if (!isTauri() || !isMountedRef.current || isRecovering) {
      return;
    }

View on GitHub (pinned to 7491200858)

Solutions

  1. Check the logged error/result for the daemon start failure (port conflict, permissions, missing binary)
  2. Verify the core/daemon service dependencies are installed and healthy via Settings diagnostics
  3. The hook transitions to its retry schedule automatically — monitor whether retries succeed
  4. If attempts are exhausted, restart the app to reset the lifecycle state
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at app/src/hooks/useDaemonLifecycle.ts:86 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/9b463ce606a46e1b. Report an issue: GitHub.