{"record":{"id":"6d0762c961e621e3","repo":"ruvnet/ruflo","slug":"ipfs-web3-storage-token-free-5gb-at-web3","errorCode":null,"errorMessage":"⚠ [IPFS]   - WEB3_STORAGE_TOKEN (free 5GB at web3.storage)","messagePattern":"⚠ \\[IPFS\\]   - WEB3_STORAGE_TOKEN \\(free 5GB at web3\\.storage\\)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/cli/src/transfer/ipfs/upload.ts","lineNumber":261,"sourceCode":"      console.warn(`[IPFS] Pinata upload failed: ${error}`);\n    }\n  }\n\n  // 3. Try Web3.storage\n  if (web3Token || pinningService === 'web3storage') {\n    try {\n      return await uploadToWeb3Storage(content, options);\n    } catch (error) {\n      console.warn(`[IPFS] Web3.storage upload failed: ${error}`);\n    }\n  }\n\n  // Fall back to demo mode - WARN user prominently\n  console.warn(`⚠ [IPFS] DEMO MODE - No IPFS credentials configured`);\n  console.warn(`⚠ [IPFS] Content will NOT be uploaded to decentralized storage`);\n  console.warn(`⚠ [IPFS] To enable real uploads, configure one of:`);\n  console.warn(`⚠ [IPFS]   - IPFS_API_URL=http://YOUR_NODE:5001 (FREE - your own node)`);\n  console.warn(`⚠ [IPFS]   - WEB3_STORAGE_TOKEN (free 5GB at web3.storage)`);\n  console.warn(`⚠ [IPFS]   - PINATA_API_KEY + PINATA_SECRET_KEY (free tier available)`);\n\n  const cid = generateDemoCID(content);\n  const size = content.length;\n\n  console.log(`[IPFS] Demo upload: ${size} bytes`);\n  console.log(`[IPFS] Name: ${name}`);\n\n  const result: IPFSUploadResult = {\n    cid,\n    size,\n    gateway,\n    url: `${gateway}/ipfs/${cid}`,\n  };\n\n  if (pin) {\n    result.pinnedAt = new Date().toISOString();\n    console.log(`[IPFS] Demo pinned at: ${result.pinnedAt}`);","sourceCodeStart":243,"sourceCodeEnd":279,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/@claude-flow/cli/src/transfer/ipfs/upload.ts#L243-L279","documentation":"Hint line in the DEMO MODE warning: to enable real uploads, set WEB3_STORAGE_TOKEN (free 5GB tier on web3.storage).","triggerScenarios":"Thrown at v3/@claude-flow/cli/src/transfer/ipfs/upload.ts:261 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set WEB3_STORAGE_TOKEN to a token from web3.storage to enable uploads."],"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"}