{"record":{"id":"4dcb8e9a698e74a9","repo":"ruvnet/ruflo","slug":"federation-transport-unavailable-err-instanceof","errorCode":null,"errorMessage":"Federation transport unavailable (${err instanceof Error ? err.message : err}); falling back to in-process routing — federation_send will log only","messagePattern":"Federation transport unavailable \\((.+?)\\); falling back to in-process routing — federation_send will log only","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/plugin-agent-federation/src/plugin.ts","lineNumber":308,"sourceCode":"    // in-process noop (logged), preserving backward compat for\n    // tests/environments without ws available.\n    let transport: LoadedTransport | null = null;\n    try {\n      const loaded = await loadFederationTransport({\n        serverName: nodeId,\n        maxIdleTimeoutMs: 30_000,\n        maxConcurrentStreams: 100,\n        enable0Rtt: true,\n      });\n      transport = loaded.transport as LoadedTransport;\n      this.transport = transport;\n      context.logger.info(\n        `Federation transport loaded: ${nodeId} (source=${loaded.source}${\n          loaded.fallbackReason ? `, note=${loaded.fallbackReason}` : ''\n        })`,\n      );\n    } catch (err) {\n      context.logger.warn(\n        `Federation transport unavailable (${err instanceof Error ? err.message : err}); ` +\n          `falling back to in-process routing — federation_send will log only`,\n      );\n    }\n\n    /**\n     * Resolve a peer's nodeId to a wire address suitable for\n     * transport.send(). Looks up the discovery registry to get the\n     * peer's published endpoint, then strips the protocol prefix to\n     * get a `host:port` string.\n     *\n     * Endpoint shapes accepted:\n     *   - \"ws://host:port\"      → \"host:port\"\n     *   - \"tailscale://host:port\" → \"host:port\"\n     *   - \"host:port\"           → \"host:port\" (passthrough)\n     */\n    const resolveAddress = (targetNodeId: string): string | null => {\n      const peer = discovery.getPeer(targetNodeId);","sourceCodeStart":290,"sourceCodeEnd":326,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/@claude-flow/plugin-agent-federation/src/plugin.ts#L290-L326","documentation":"Log warning in initialize: loadFederationTransport could not provide a real transport (e.g. ws module unavailable), so the plugin falls back to in-process routing where federation_send only logs and no network transport exists.","triggerScenarios":"Thrown at v3/@claude-flow/plugin-agent-federation/src/plugin.ts:308 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the federation transport error (network, bind, credentials); federation_send only logs until the transport is restored."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fa13ee4ad60ac2090b1480656eb233521790d640","analyzedAt":"2026-08-18T21:34:22.708Z","contentChangedAt":"2026-08-18T21:34:22.708Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}