tinyhumansai/openhuman · error

[skills][composio] failed to load composio mode status:

Error message

[skills][composio] failed to load composio mode status:

What it means

Fetching the Composio mode status (openhumanComposioGetMode) failed for a local session on the Skills page. The effect leaves hasComposioApiKey unset (null), which suppresses the local-API-key banner — the page renders without knowing whether a Composio key is configured rather than assuming it is absent. Common causes: core RPC unreachable or the Composio integration check erroring core-side.

Source

Thrown at app/src/pages/Skills.tsx:621

  const [selectedCategory, setSelectedCategory] = useState<SkillCategory>('All');
  const [hasComposioApiKey, setHasComposioApiKey] = useState<boolean | null>(null);
  const showLocalComposioApiKeyBanner = isLocalSession && hasComposioApiKey === false;

  useEffect(() => {
    if (!isLocalSession) {
      setHasComposioApiKey(null);
      return;
    }
    let cancelled = false;
    void openhumanComposioGetMode()
      .then(res => {
        if (!cancelled) {
          setHasComposioApiKey(Boolean(res.result?.api_key_set));
        }
      })
      .catch(err => {
        if (!cancelled) {
          console.warn('[skills][composio] failed to load composio mode status:', err);
          setHasComposioApiKey(false);
        }
      });
    return () => {
      cancelled = true;
    };
  }, [isLocalSession]);

  const bestChannelStatus = (channelId: ChannelType): ChannelConnectionStatus => {
    const conns = channelConnections.connections[channelId];
    if (!conns) return 'disconnected';
    const statuses = Object.values(conns).map(c => c?.status ?? 'disconnected');
    if (statuses.includes('connected')) return 'connected';
    if (statuses.includes('connecting')) return 'connecting';
    if (statuses.includes('error')) return 'error';
    return 'disconnected';
  };

View on GitHub (pinned to 7491200858)

Solutions

  1. Check the warned error for transport vs controller failure
  2. Confirm the core process is running and the integrations surface is compiled in/enabled
  3. Re-navigate to the Skills page to re-trigger the status fetch once healthy
  4. If it persistently fails, inspect the core log for the composio mode check
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at app/src/pages/Skills.tsx:621 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/dedd6c5817af9bcf. Report an issue: GitHub.