tinyhumansai/openhuman · error

[overlay] failed to open core socket

Error message

[overlay] failed to open core socket

What it means

The overlay window failed to open its core socket connection at setup. The overlay subscribes to the canonical colon-delimited event forms (e.g. dictation:toggle) over this socket; when the connection cannot be established, the overlay's event-driven UI (dictation state, notifications) does not update. Debug-level connect_error/disconnect handlers are installed alongside, so repeated failures are visible in the debug console.

Source

Thrown at app/src/overlay/OverlayApp.tsx:388

        socket.on('connect_error', (err: Error) => {
          console.debug('[overlay] socket connect error:', err.message);
        });

        socket.on('disconnect', (reason: string) => {
          console.debug('[overlay] socket disconnected:', reason);
        });

        // Core emits each event under both colon and underscore forms
        // (see `emit_with_aliases` in `src/core/socketio.rs`). Subscribe
        // only to the canonical colon-delimited form so each signal fires
        // the handler exactly once.
        socket.on('dictation:toggle', handleDictationToggle);
        socket.on('dictation:transcription', handleDictationTranscription);
        socket.on('overlay:attention', handleAttention);

        socket.connect();
      } catch (err) {
        console.warn('[overlay] failed to open core socket', err);
      }
    };

    void connect();

    return () => {
      disposed = true;
      if (socket) {
        socket.disconnect();
        socket = null;
      }
      clearDismissTimer();
    };
  }, [clearDismissTimer, handleAttention, handleDictationToggle, handleDictationTranscription]);

  // ── Companion state via Tauri event ────────────────────────────────────
  // The desktop companion now lives shell-side and emits a
  // `companion://state_changed` Tauri event (camelCase payload) rather than the

View on GitHub (pinned to 7491200858)

Solutions

  1. Verify the core process is healthy and the socket endpoint URL/port passed to the overlay is correct
  2. Check for auth rejection during the socket handshake (invalid/expired bearer)
  3. Look at the overlay debug console for the paired 'connect error' messages with the underlying reason
  4. Restarting the app re-initializes the overlay and its socket
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at app/src/overlay/OverlayApp.tsx:388 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/465e55d7ac0fcfa7. Report an issue: GitHub.