ruvnet/ruflo · error

Federation transport does not expose onMessage(); inbound by

Error message

Federation transport does not expose onMessage(); inbound bytes will queue but not dispatch. Upgrade agentic-flow to >= 2.0.12-fix.3.

What it means

Capability check on the loaded federation transport during initialize: the transport object lacks an onMessage() subscription API (older agentic-flow), so inbound envelopes will be queued by the plugin but never dispatched to the inbound pipeline. The log instructs upgrading agentic-flow to at least 2.0.12-fix.3 where the transport contract includes onMessage().

Source

Thrown at v3/@claude-flow/plugin-agent-federation/src/plugin.ts:481

          audit,
          eventBus: context.eventBus,
          logger: context.logger,
          verifyEnvelope,
          acceptedSignatureVersions:
            signatureMode === 'require-jcs' ? ['jcs-v1'] : ['legacy-v1', 'jcs-v1'],
          authorizationMode,
          authorizeInbound: ({ messageType, peer, messageSizeBytes, sourceNodeId }) =>
            policyEngine.evaluateMessage(
              messageType as FederationMessageType,
              peer.trustLevel,
              messageSizeBytes,
              sourceNodeId,
            ),
        });
      });
      context.logger.debug('Federation inbound dispatcher subscribed (with Ed25519 sig verify)');
    } else {
      context.logger.warn(
        'Federation transport does not expose onMessage(); inbound bytes will queue but not dispatch. ' +
          'Upgrade agentic-flow to >= 2.0.12-fix.3.',
      );
    }

    // A2A Agent Card well-known endpoint (opt-in, graceful). Enabled with
    // config.a2aCard = true + config.a2aCardPort. Serves the local node's
    // manifest as a spec-compliant A2A 1.0 card at
    // /.well-known/agent-card.json. Binds 127.0.0.1 unless config.a2aCardHost
    // is set AND config.a2aCardAllowNonLoopback is true (ADR-166: never
    // loosen binding implicitly). A bind failure logs and degrades — the
    // rest of federation is unaffected.
    const a2aEnabled = config['a2aCard'] === true;
    const a2aPort = config['a2aCardPort'] as number | undefined;
    if (a2aEnabled && typeof a2aPort === 'number') {
      try {
        this.agentCardServer = await startAgentCardServer({
          getCard: () => {

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Upgrade agentic-flow to >= 2.0.12-fix.3 so inbound messages dispatch instead of queuing.
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at v3/@claude-flow/plugin-agent-federation/src/plugin.ts:481 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18). Data as JSON: /api/errors/d4e9fa1eff615725. Report an issue: GitHub.