mirror of
https://github.com/ruvnet/ruflo.git
synced 2026-09-14 14:01:28 +08:00
617e55d332
* Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T14:51:49Z - Changes: 6 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T14:52:35Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T14:53:20Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T14:54:04Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T14:56:07Z - Changes: 5 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:01:14Z - Changes: 3 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(plugins): complete IPFS plugin registry implementation v3.0.0-alpha.171 - Add live IPFS registry support with multi-gateway fallback - Add Ed25519 signature verification for registries - Add publish-registry.ts script for Pinata publishing - Add comprehensive setup guide for Google Cloud + Pinata - Fix ES module compatibility in publish script - Demo mode fallback with real npm download stats IPFS Capabilities: - Resolve IPNS names via multiple gateways - Fetch content from IPFS with automatic fallback - Verify Ed25519 signatures on registries - Check content availability across gateways - Support for both CIDv0 and CIDv1 formats Gateway Support: - Pinata (primary) - Cloudflare IPFS - ipfs.io - dweb.link - w3s.link Co-Authored-By: claude-flow <ruv@ruv.net> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:13:28Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:14:15Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:15:33Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:15:52Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:16:56Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(plugins): live IPFS plugin registry v3.0.0-alpha.172 IPFS Plugin Registry is now live: - CID: bafkreictvxdrcuku2yivzvagm24aocjkuwsezg7hvnyxvqf2pksixvareq - 6 official plugins pinned on Pinata - Multi-gateway fallback (Pinata, ipfs.io, dweb.link) - Direct CID detection (skips slow IPNS resolution) - Ed25519 signature verification ready Features: - Plugin discovery from live IPFS - Model import/export capability (Cloud Function) - Plugin sharing and tracking analytics - Download tracking support Cloud Function included: - Secure publishing via Secret Manager - Live npm stats fetching - Analytics tracking - Model import/export endpoints Tested: npx claude-flow@latest plugins list Co-Authored-By: claude-flow <ruv@ruv.net> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:20:55Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(plugins): full 19-plugin IPFS registry v3.0.0-alpha.173 Updated CID with all 19 official plugins: - CID: bafkreiahw4ufxwycbwwswt7rgbx6hkgnvg3rophhocatgec4bu5e7tzk2a Plugins now live on IPFS: - @claude-flow/embeddings (2,684 downloads) - @claude-flow/security (520 downloads) - @claude-flow/plugin-agentic-qe (289 downloads) - @claude-flow/plugin-prime-radiant (216 downloads) - @claude-flow/claims (156 downloads) - @claude-flow/plugin-gastown-bridge (150 downloads) - @claude-flow/neural (94 downloads) - @claude-flow/plugins (44 downloads) - @claude-flow/performance (22 downloads) - Plus 10 more specialized plugins Co-Authored-By: claude-flow <ruv@ruv.net> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:28:55Z - Changes: 6 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:29:59Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:31:16Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:31:31Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:32:58Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:33:21Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:33:22Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:33:52Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:34:07Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:34:25Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:34:44Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:34:55Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:35:11Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:36:39Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:40:37Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:40:47Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:41:16Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:43:05Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:43:42Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:44:59Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T15:55:29Z - Changes: 6 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:05:09Z - Changes: 7 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:05:26Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:05:43Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:06:13Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:08:14Z - Changes: 6 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:08:15Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:08:16Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:08:17Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:08:18Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:14:26Z - Changes: 5 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:14:42Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:15:56Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:16:22Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:16:46Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:16:52Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:17:56Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:19:18Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:19:25Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:20:25Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:23:27Z - Changes: 5 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:23:34Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:24:05Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:28:10Z - Changes: 8 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:35:35Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:35:43Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:35:55Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:36:11Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:36:25Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:36:33Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:36:41Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:37:08Z - Changes: 2 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:38:21Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:38:35Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:38:49Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:40:19Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:40:51Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:41:25Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:42:15Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:42:49Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:43:19Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:43:26Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:43:32Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:43:55Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:44:10Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T16:57:56Z - Changes: 10 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T17:04:11Z - Changes: 5 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T17:04:23Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T17:06:15Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T17:06:39Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T17:07:42Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T17:08:13Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T17:10:36Z - Changes: 3 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T18:04:31Z - Changes: 8 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T18:05:06Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T18:05:41Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T18:05:55Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T18:06:28Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T18:06:36Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T18:07:34Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T18:11:33Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T18:12:22Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Checkpoint: File edits Automatic checkpoint created by Claude Code - Branch: feature/ipfs-plugin-registry - Timestamp: 2026-01-24T18:13:00Z - Changes: 1 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
9.7 KiB
9.7 KiB
IPFS Plugin Registry Setup Guide
This guide walks through setting up a live IPFS plugin registry using Google Cloud and Pinata.
Prerequisites
- Google Cloud account with billing enabled
- Node.js 20+
gcloudCLI installed
Step 1: Pinata Setup (IPFS Pinning Service)
1.1 Create Pinata Account
- Go to https://pinata.cloud and create an account
- Navigate to API Keys section
- Create a new API key with these permissions:
pinning/pinFileToIPFS: truepinning/pinJSONToIPFS: truepinning/unpin: true
1.2 Save Your Credentials
# Add to your shell profile (~/.zshrc or ~/.bashrc)
export PINATA_JWT="your-jwt-token-here"
1.3 Generate IPNS Key (Optional - for stable addressing)
If you have Pinata's paid plan with Dedicated Gateways:
# Via Pinata dashboard or API
curl -X POST "https://api.pinata.cloud/v3/ipfs/keys" \
-H "Authorization: Bearer $PINATA_JWT" \
-H "Content-Type: application/json" \
-d '{"name": "claude-flow-registry"}'
Step 2: Google Cloud Setup
2.1 Create Project
# Create new project
gcloud projects create claude-flow-registry --name="Claude Flow Registry"
# Set as active project
gcloud config set project claude-flow-registry
# Enable billing (required for Cloud Functions)
gcloud beta billing projects link claude-flow-registry \
--billing-account=YOUR_BILLING_ACCOUNT_ID
2.2 Enable Required APIs
gcloud services enable \
cloudfunctions.googleapis.com \
cloudbuild.googleapis.com \
storage.googleapis.com \
secretmanager.googleapis.com
2.3 Create Storage Bucket
# Create bucket for registry source data
gcloud storage buckets create gs://claude-flow-plugin-registry \
--location=US \
--uniform-bucket-level-access
# Enable versioning for rollback
gsutil versioning set on gs://claude-flow-plugin-registry
# Make registry.json publicly readable (optional)
gsutil iam ch allUsers:objectViewer gs://claude-flow-plugin-registry
2.4 Create Service Account
# Create service account
gcloud iam service-accounts create plugin-registry-publisher \
--display-name="Plugin Registry Publisher"
# Grant permissions
gcloud projects add-iam-policy-binding claude-flow-registry \
--member="serviceAccount:plugin-registry-publisher@claude-flow-registry.iam.gserviceaccount.com" \
--role="roles/storage.objectAdmin"
gcloud projects add-iam-policy-binding claude-flow-registry \
--member="serviceAccount:plugin-registry-publisher@claude-flow-registry.iam.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"
2.5 Store Secrets
# Store Pinata JWT
echo -n "$PINATA_JWT" | gcloud secrets create pinata-jwt --data-file=-
# Generate and store Ed25519 signing key
node -e "
const crypto = require('crypto');
const { subtle } = require('crypto').webcrypto;
(async () => {
const keyPair = await subtle.generateKey(
{ name: 'Ed25519', namedCurve: 'Ed25519' },
true,
['sign', 'verify']
);
const privateKey = await subtle.exportKey('pkcs8', keyPair.privateKey);
const privateKeyHex = Buffer.from(privateKey).toString('hex');
console.log(privateKeyHex);
})();
" | gcloud secrets create registry-private-key --data-file=-
Step 3: Deploy Cloud Function
3.1 Create Function Directory
mkdir -p cloud-functions/publish-registry
cd cloud-functions/publish-registry
3.2 Create package.json
{
"name": "publish-registry",
"version": "1.0.0",
"main": "index.js",
"type": "module",
"dependencies": {
"@google-cloud/storage": "^7.0.0",
"@google-cloud/secret-manager": "^5.0.0",
"@noble/ed25519": "^2.0.0"
}
}
3.3 Create index.js
import { Storage } from '@google-cloud/storage';
import { SecretManagerServiceClient } from '@google-cloud/secret-manager';
import * as ed from '@noble/ed25519';
const storage = new Storage();
const secretManager = new SecretManagerServiceClient();
async function getSecret(name) {
const [version] = await secretManager.accessSecretVersion({
name: `projects/claude-flow-registry/secrets/${name}/versions/latest`,
});
return version.payload.data.toString();
}
export async function publishRegistry(req, res) {
try {
// Get secrets
const pinataJwt = await getSecret('pinata-jwt');
const privateKey = await getSecret('registry-private-key');
// Fetch registry from GCS
const bucket = storage.bucket('claude-flow-plugin-registry');
const file = bucket.file('registry.json');
const [content] = await file.download();
const registry = JSON.parse(content.toString());
// Update timestamp
registry.updatedAt = new Date().toISOString();
// Sign registry
const registryToSign = { ...registry };
delete registryToSign.registrySignature;
delete registryToSign.registryPublicKey;
const message = JSON.stringify(registryToSign);
const signature = await ed.signAsync(
new TextEncoder().encode(message),
Buffer.from(privateKey, 'hex')
);
const publicKey = await ed.getPublicKeyAsync(Buffer.from(privateKey, 'hex'));
registry.registrySignature = Buffer.from(signature).toString('hex');
registry.registryPublicKey = `ed25519:${Buffer.from(publicKey).toString('hex')}`;
// Pin to IPFS
const pinResponse = await fetch('https://api.pinata.cloud/pinning/pinJSONToIPFS', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${pinataJwt}`,
},
body: JSON.stringify({
pinataContent: registry,
pinataMetadata: {
name: 'claude-flow-plugin-registry',
keyvalues: {
version: registry.version,
updatedAt: registry.updatedAt,
},
},
}),
});
if (!pinResponse.ok) {
throw new Error(`Pinata error: ${await pinResponse.text()}`);
}
const pinResult = await pinResponse.json();
res.json({
success: true,
cid: pinResult.IpfsHash,
updatedAt: registry.updatedAt,
pluginCount: registry.plugins.length,
gateways: [
`https://gateway.pinata.cloud/ipfs/${pinResult.IpfsHash}`,
`https://ipfs.io/ipfs/${pinResult.IpfsHash}`,
],
});
} catch (error) {
console.error('Publish failed:', error);
res.status(500).json({ error: error.message });
}
}
3.4 Deploy Function
gcloud functions deploy publish-registry \
--gen2 \
--runtime=nodejs20 \
--region=us-central1 \
--source=. \
--entry-point=publishRegistry \
--trigger-http \
--allow-unauthenticated \
--service-account=plugin-registry-publisher@claude-flow-registry.iam.gserviceaccount.com \
--set-env-vars=GCP_PROJECT=claude-flow-registry
Step 4: Create Initial Registry
4.1 Upload Registry to GCS
# Generate initial registry
npx tsx scripts/publish-registry.ts --dry-run > registry.json
# Upload to GCS
gsutil cp registry.json gs://claude-flow-plugin-registry/registry.json
4.2 Trigger First Publish
# Get function URL
FUNCTION_URL=$(gcloud functions describe publish-registry \
--gen2 --region=us-central1 --format='value(serviceConfig.uri)')
# Trigger publish
curl -X POST "$FUNCTION_URL"
Step 5: Automate with Cloud Build
5.1 Create cloudbuild.yaml
steps:
# Update registry from npm stats
- name: 'node:20'
entrypoint: 'npx'
args: ['tsx', 'scripts/publish-registry.ts', '--dry-run']
dir: 'v3/@claude-flow/cli'
# Upload to GCS
- name: 'gcr.io/cloud-builders/gsutil'
args: ['cp', 'registry.json', 'gs://claude-flow-plugin-registry/registry.json']
# Trigger Cloud Function
- name: 'gcr.io/cloud-builders/curl'
args: ['-X', 'POST', '${_FUNCTION_URL}']
substitutions:
_FUNCTION_URL: 'https://us-central1-claude-flow-registry.cloudfunctions.net/publish-registry'
# Run daily at 2am UTC
options:
logging: CLOUD_LOGGING_ONLY
5.2 Create Cloud Scheduler Trigger
gcloud scheduler jobs create http publish-registry-daily \
--location=us-central1 \
--schedule="0 2 * * *" \
--uri="https://us-central1-claude-flow-registry.cloudfunctions.net/publish-registry" \
--http-method=POST
Step 6: Update Claude Flow CLI
Update DEFAULT_PLUGIN_STORE_CONFIG in discovery.ts:
export const DEFAULT_PLUGIN_STORE_CONFIG: PluginStoreConfig = {
registries: [
{
name: 'claude-flow-official',
description: 'Official Claude Flow plugin registry',
// Use the CID from your first publish
ipnsName: 'YOUR_IPNS_KEY_OR_CID',
gateway: 'https://gateway.pinata.cloud',
// Use your public key from the signing step
publicKey: 'ed25519:YOUR_PUBLIC_KEY',
trusted: true,
official: true,
},
],
// ... rest of config
};
Cost Estimate
| Service | Free Tier | Paid Tier |
|---|---|---|
| Pinata | 1GB storage, 100 pins | $20/mo for 100GB |
| GCS | 5GB free | ~$0.02/GB/mo |
| Cloud Functions | 2M invocations free | ~$0.40/million |
| Cloud Scheduler | 3 jobs free | $0.10/job/mo |
| Total | $0 | ~$20/mo |
Troubleshooting
IPNS Resolution Fails
- Ensure the CID is pinned on Pinata
- Try different gateways (ipfs.io, cloudflare-ipfs.com)
- IPNS can take 5-10 minutes to propagate
Signature Verification Fails
- Ensure the public key in config matches the signing key
- Check that the registry wasn't modified after signing
Cloud Function Errors
- Check Cloud Logging for detailed errors
- Verify service account has correct permissions
- Test secrets access manually