tinyhumansai/openhuman · error

[DaemonLifecycle] Retry failed:

Error message

[DaemonLifecycle] Retry failed:

What it means

A scheduled daemon reconnection retry failed: the backoff timer fired and startDaemon either threw or returned a result whose state was not 'Running'. The attempt counter was already incremented for this try; the hook re-arms another backoff-scheduled retry while attempts remain under MAX_RECONNECTION_ATTEMPTS, so this warn represents one failed round in the bounded retry sequence rather than a terminal state.

Source

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

      clearTimeout(retryTimeoutRef.current);
    }

    retryTimeoutRef.current = setTimeout(async () => {
      if (!isMountedRef.current) return;

      const { uid, startDaemon } = latestLifecycleRef.current;

      try {
        setIsRecovering(uid, true);
        incrementConnectionAttempts(uid);

        const result = await startDaemon();

        if (result?.result && result.result.state === 'Running') {
          console.log('[DaemonLifecycle] Retry successful');
          resetConnectionAttempts(uid);
        } else {
          console.warn('[DaemonLifecycle] Retry failed:', result);
          // Will trigger another retry via useEffect
        }
      } catch (error) {
        console.error('[DaemonLifecycle] Retry error:', error);
        // Will trigger another retry via useEffect
      } finally {
        setIsRecovering(uid, false);
      }
    }, retryDelay);
  }, [calculateRetryDelay]);

  // Handle visibility change (background/foreground)
  const handleVisibilityChange = useCallback(() => {
    if (!isTauri() || !isMountedRef.current) return;

    const { isAutoStartEnabled, status, isRecovering } = latestLifecycleRef.current;

    if (document.visibilityState === 'visible') {

View on GitHub (pinned to 7491200858)

Solutions

  1. Check the warned result/error for this round's failure reason
  2. Correlate with prior retry warns to see whether failures repeat with the same cause (e.g. daemon crash loop)
  3. Fix the underlying daemon start failure; subsequent scheduled retries will then succeed and reset the counter
  4. If retries exhaust, use the manual restart action or restart the app
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at app/src/hooks/useDaemonLifecycle.ts:142 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/371069ff2cf4c3f8. Report an issue: GitHub.