tinyhumansai/openhuman · error

[notch] failed to connect socket

Error message

[notch] failed to connect socket

What it means

The notch companion window failed to establish its socket connection to the core. The notch UI depends on the socket for voice-listener status words ('Listening'/'Processing') and attention messages; without it the notch renders but receives no state updates, so the pill stays in its initial mode.

Source

Thrown at app/src/notch/NotchApp.tsx:254

            // The voice listener uses two reserved status words to drive the
            // pill: "Listening" (capturing speech) and "Processing" (running a
            // command). Map them to the matching icon; everything else is a
            // generic attention message.
            const lower = message.toLowerCase();
            const mode: NotchMode =
              lower === 'listening'
                ? 'listening'
                : lower === 'processing'
                  ? 'thinking'
                  : 'attention';
            setState({ mode, text: message.length > 60 ? `${message.slice(0, 57)}…` : message });
            scheduleDismiss(payload?.ttl_ms ?? DEFAULT_TTL_MS);
          });

          socket.connect();
          console.debug('[notch] socket connected', socket.id);
        } catch (err) {
          console.warn('[notch] failed to connect socket', err);
        }
      })();

      return () => {
        disposed = true;
      };
    },
    [t, clearDismiss, scheduleDismiss]
  );

  // ── Core URL bootstrap ──────────────────────────────────────────────────────

  useEffect(() => {
    // Track the in-flight connect's disposer so an unmount (or a new core-url)
    // cancels a still-resolving connectCoreSocket — otherwise the async branch
    // could attach listeners / setState after teardown.
    let disposePendingConnect: (() => void) | undefined;

View on GitHub (pinned to 7491200858)

Solutions

  1. Confirm the core process is running and its socket port is reachable from the notch webview
  2. Check the core log for socket server startup errors at the same timestamp
  3. If auth-related, verify the socket bearer token handshake — an expired token rejects the connection
  4. Restarting the app re-creates the notch window and its socket connection
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at app/src/notch/NotchApp.tsx:254 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/a67f4fb87182a17b. Report an issue: GitHub.