claude-flow 3.56.3 → 3.56.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/.claude/helpers/auto-memory-hook.mjs +13 -8
  2. package/.claude/helpers/hook-handler.cjs +19 -14
  3. package/.claude/helpers/learning-service.mjs +5 -2
  4. package/.claude/helpers/session.cjs +56 -10
  5. package/.claude/helpers/statusline.cjs +1338 -1328
  6. package/.claude-plugin/scripts/ruflo-hook.cjs +14 -2
  7. package/node_modules/@claude-flow/codex/dist/cli.js +0 -0
  8. package/node_modules/@claude-flow/mcp/dist/resource-registry.d.ts +1 -0
  9. package/node_modules/@claude-flow/mcp/dist/resource-registry.d.ts.map +1 -1
  10. package/node_modules/@claude-flow/mcp/dist/resource-registry.js +10 -4
  11. package/node_modules/@claude-flow/mcp/dist/resource-registry.js.map +1 -1
  12. package/node_modules/@claude-flow/mcp/dist/sampling.d.ts.map +1 -1
  13. package/node_modules/@claude-flow/mcp/dist/sampling.js +13 -6
  14. package/node_modules/@claude-flow/mcp/dist/sampling.js.map +1 -1
  15. package/node_modules/@claude-flow/mcp/dist/task-manager.d.ts.map +1 -1
  16. package/node_modules/@claude-flow/mcp/dist/task-manager.js +10 -1
  17. package/node_modules/@claude-flow/mcp/dist/task-manager.js.map +1 -1
  18. package/node_modules/@claude-flow/mcp/dist/tool-registry.d.ts +1 -0
  19. package/node_modules/@claude-flow/mcp/dist/tool-registry.d.ts.map +1 -1
  20. package/node_modules/@claude-flow/mcp/dist/tool-registry.js +17 -11
  21. package/node_modules/@claude-flow/mcp/dist/tool-registry.js.map +1 -1
  22. package/node_modules/@claude-flow/mcp/package.json +1 -1
  23. package/node_modules/@claude-flow/plugin-agent-federation/dist/bin.js +0 -0
  24. package/node_modules/@claude-flow/security/dist/index.d.ts +1 -1
  25. package/node_modules/@claude-flow/security/dist/index.d.ts.map +1 -1
  26. package/node_modules/@claude-flow/security/dist/index.js +1 -1
  27. package/node_modules/@claude-flow/security/dist/index.js.map +1 -1
  28. package/node_modules/@claude-flow/security/dist/plugins/integrity-verifier.d.ts +9 -1
  29. package/node_modules/@claude-flow/security/dist/plugins/integrity-verifier.d.ts.map +1 -1
  30. package/node_modules/@claude-flow/security/dist/plugins/integrity-verifier.js +15 -2
  31. package/node_modules/@claude-flow/security/dist/plugins/integrity-verifier.js.map +1 -1
  32. package/node_modules/@claude-flow/security/package.json +1 -1
  33. package/package.json +3 -3
  34. package/v3/@claude-flow/cli/README.md +62 -158
  35. package/v3/@claude-flow/cli/catalog-manifest.json +5 -5
  36. package/v3/@claude-flow/cli/dist/src/commands/doctor.js +7 -13
  37. package/v3/@claude-flow/cli/dist/src/commands/hooks.js +3 -6
  38. package/v3/@claude-flow/cli/dist/src/commands/init.js +3 -10
  39. package/v3/@claude-flow/cli/dist/src/commands/metaharness.js +9 -14
  40. package/v3/@claude-flow/cli/dist/src/commands/plugins.js +81 -8
  41. package/v3/@claude-flow/cli/dist/src/commands/security-code-patterns.d.ts +40 -0
  42. package/v3/@claude-flow/cli/dist/src/commands/security-code-patterns.js +192 -0
  43. package/v3/@claude-flow/cli/dist/src/commands/security.js +8 -11
  44. package/v3/@claude-flow/cli/dist/src/commands/status.js +8 -10
  45. package/v3/@claude-flow/cli/dist/src/init/executor.d.ts +1 -1
  46. package/v3/@claude-flow/cli/dist/src/init/executor.js +25 -16
  47. package/v3/@claude-flow/cli/dist/src/init/helper-commands.d.ts +18 -0
  48. package/v3/@claude-flow/cli/dist/src/init/helper-commands.js +142 -0
  49. package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +128 -29
  50. package/v3/@claude-flow/cli/dist/src/init/settings-generator.js +36 -103
  51. package/v3/@claude-flow/cli/dist/src/mcp-tools/metaharness-tools.js +7 -10
  52. package/v3/@claude-flow/cli/dist/src/mcp-tools/task-tools.js +24 -3
  53. package/v3/@claude-flow/cli/dist/src/mcp-tools/testgen-tools.js +8 -12
  54. package/v3/@claude-flow/cli/dist/src/mcp-tools/transfer-tools.js +9 -8
  55. package/v3/@claude-flow/cli/dist/src/mcp-tools/workflow-tools.js +10 -4
  56. package/v3/@claude-flow/cli/dist/src/memory/graph-edge-writer.js +33 -11
  57. package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +2 -19
  58. package/v3/@claude-flow/cli/dist/src/memory/shared-sqlite.d.ts +6 -0
  59. package/v3/@claude-flow/cli/dist/src/memory/shared-sqlite.js +35 -7
  60. package/v3/@claude-flow/cli/dist/src/missions/schemas.d.ts +125 -125
  61. package/v3/@claude-flow/cli/dist/src/mods/command-registry/schema.d.ts +199 -199
  62. package/v3/@claude-flow/cli/dist/src/plugins/manager.d.ts +3 -1
  63. package/v3/@claude-flow/cli/dist/src/plugins/manager.js +31 -10
  64. package/v3/@claude-flow/cli/dist/src/plugins/own-install.d.ts +15 -0
  65. package/v3/@claude-flow/cli/dist/src/plugins/own-install.js +51 -0
  66. package/v3/@claude-flow/cli/dist/src/plugins/store/discovery.d.ts +26 -2
  67. package/v3/@claude-flow/cli/dist/src/plugins/store/discovery.js +108 -81
  68. package/v3/@claude-flow/cli/dist/src/plugins/store/index.d.ts +1 -1
  69. package/v3/@claude-flow/cli/dist/src/plugins/store/index.js +1 -1
  70. package/v3/@claude-flow/cli/dist/src/plugins/store/types.d.ts +5 -0
  71. package/v3/@claude-flow/cli/dist/src/plugins/trust-policy.d.ts +13 -0
  72. package/v3/@claude-flow/cli/dist/src/plugins/trust-policy.js +29 -0
  73. package/v3/@claude-flow/cli/dist/src/ruvector/graph-analyzer.js +18 -6
  74. package/v3/@claude-flow/cli/dist/src/transfer/ipfs/client.js +3 -1
  75. package/v3/@claude-flow/cli/package.json +5 -5
  76. package/.claude/.proven-config-version +0 -1
  77. package/.claude/proven-config.json +0 -42
@@ -61,15 +61,27 @@ export function hashManifest(manifest) {
61
61
  export function fingerprint(publicKey) {
62
62
  return publicKey.slice(0, 16);
63
63
  }
64
+ /**
65
+ * A placeholder key that must never vouch for anything: empty or all zeros, as
66
+ * shipped in `trust-anchors.json` until the real key is filled in. The all-zero
67
+ * key is a small-order point: under ZIP-215 rules a fixed forged signature
68
+ * verifies against it for every message.
69
+ */
70
+ export function isPlaceholderKey(publicKey) {
71
+ return /^0*$/.test(publicKey.trim());
72
+ }
64
73
  /**
65
74
  * Find the trust anchor that vouches for a manifest. Returns the matched
66
75
  * anchor (with anchor.publicKey === signer.publicKey) or null.
67
76
  *
68
77
  * Scope-matching uses a minimal glob: `*` at the end of the scope string
69
- * matches any suffix. Empty/missing scope matches every plugin id.
78
+ * matches any suffix. Empty/missing scope matches every plugin id. Placeholder
79
+ * anchors (see {@link isPlaceholderKey}) never match.
70
80
  */
71
81
  export function findAnchor(anchors, pluginId, signerPublicKey, now) {
72
82
  for (const a of anchors) {
83
+ if (isPlaceholderKey(a.publicKey))
84
+ continue;
73
85
  if (a.publicKey !== signerPublicKey)
74
86
  continue;
75
87
  if (a.expiresAt && new Date(a.expiresAt).getTime() <= now)
@@ -151,7 +163,8 @@ export class PluginIntegrityVerifier {
151
163
  const sigBytes = hexToBytes(signed.signature);
152
164
  const msgBytes = hexToBytes(signed.manifestHash);
153
165
  const pubBytes = hexToBytes(signed.publicKey);
154
- ok = await ed.verify(sigBytes, msgBytes, pubBytes);
166
+ // RFC 8032 strict mode: rejects small-order keys, which ZIP-215 accepts.
167
+ ok = await ed.verify(sigBytes, msgBytes, pubBytes, { zip215: false });
155
168
  }
156
169
  catch {
157
170
  ok = false;
@@ -1 +1 @@
1
- {"version":3,"file":"integrity-verifier.js","sourceRoot":"","sources":["../../src/plugins/integrity-verifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integrity-verifier.js","sourceRoot":"","sources":["../../src/plugins/integrity-verifier.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claude-flow/security",
3
- "version": "3.0.3",
3
+ "version": "3.0.4",
4
4
  "type": "module",
5
5
  "description": "Security module - CVE fixes, input validation, path security",
6
6
  "main": "dist/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-flow",
3
- "version": "3.56.3",
3
+ "version": "3.56.5",
4
4
  "workspaces": [
5
5
  "v3/@claude-flow/codex",
6
6
  "v3/@claude-flow/mcp",
@@ -68,10 +68,10 @@
68
68
  "dependencies": {
69
69
  "@claude-flow/cli-core": "3.7.0",
70
70
  "@claude-flow/codex": "3.0.3",
71
- "@claude-flow/mcp": "3.1.0",
71
+ "@claude-flow/mcp": "3.1.1",
72
72
  "@claude-flow/neural": "3.0.0",
73
73
  "@claude-flow/plugin-agent-federation": "1.0.1",
74
- "@claude-flow/security": "3.0.3",
74
+ "@claude-flow/security": "3.0.4",
75
75
  "@claude-flow/shared": "3.0.2",
76
76
  "@iarna/toml": "^2.2.5",
77
77
  "@noble/ed25519": "2.3.0",
@@ -1,85 +1,22 @@
1
1
  <div align="center">
2
2
 
3
- <a href="https://cognitum.one/agentic-engineering"><img src="ruflo/assets/ruflo-neon-flicker.gif" alt="Ruflo animated neon sign" width="100%"></a>
4
-
5
- **An agent meta-harness for Claude Code and Codex.**
3
+ [![Ruflo Banner](ruflo/assets/ruflo-small.jpeg)](https://cognitum.one/agentic-engineering)
6
4
 
7
5
  <!-- Try Ruflo — the 3 badges first-time visitors actually act on -->
8
6
  [![npm version (ruflo)](https://img.shields.io/npm/v/ruflo?label=npx%20ruflo&style=for-the-badge&logo=npm&color=cb3837)](https://www.npmjs.com/package/ruflo)
9
7
  [![MIT License](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge)](https://opensource.org/licenses/MIT)
10
8
  [![Star on GitHub](https://img.shields.io/github/stars/ruvnet/claude-flow?style=for-the-badge&logo=github&color=gold)](https://github.com/ruvnet/claude-flow)
11
9
 
12
- <p align="center">
13
- <a href="data/npm-downloads.latest.json"><img src="docs/assets/readme/badges/downloads.svg?v=mobile-readable-3" width="300" alt="Ecosystem npm downloads: 12.52M over 12 months through October 4, 2026"></a>
14
- <br>
15
- <a href="https://github.com/ruvnet/claude-flow"><img src="docs/assets/readme/badges/claude.svg?v=mobile-readable-3" width="300" alt="Claude Code"></a>
16
- <a href="https://www.npmjs.com/package/@claude-flow/codex"><img src="docs/assets/readme/badges/codex.svg?v=mobile-readable-3" width="300" alt="Codex Plugin"></a>
17
- </p>
18
-
19
- </div>
20
-
21
- <a id="start-here"></a>
22
-
23
- ## <img src="docs/assets/readme/icons/terminal.svg" width="32" height="32" alt=""> Get started with Ruflo
24
-
25
- <img src="docs/assets/readme/icons/plugins.svg" width="28" height="28" alt=""> **Start in Claude Code** with core tools, the visual console and runtime mods. Requires Claude Code **2.1.287 or later**. Run inside Claude Code:
26
-
27
- ```text
28
- /plugin marketplace add ruvnet/ruflo
29
- /plugin install ruflo-core@ruflo
30
- /plugin install ruflo-console@ruflo
31
- /plugin install ruflo-mods@ruflo
32
- /reload-plugins
33
- /ruflo
34
- ```
35
-
36
- **Core** provides foundation tools. **Console** opens the agent cockpit. **Mods** add routing and policy enforcement inside Claude Code. Mods run with your account's permissions; review their code before installing.
37
-
38
- <img src="docs/assets/readme/icons/terminal.svg" width="28" height="28" alt=""> **Using Codex or another MCP enabled tool?** Use NPX for Ruflo project setup and connect your client to the Ruflo MCP server. Run the setup wizard in your project terminal:
39
-
40
- ```bash
41
- npx ruflo@latest init wizard
42
- ```
43
-
44
- For clients that support local stdio MCP servers, configure **command** `npx` and **arguments** `["-y", "ruflo@latest", "mcp", "start"]`. The equivalent server command is:
45
-
46
- ```bash
47
- npx -y ruflo@latest mcp start
48
- ```
49
-
50
- MCP exposes Ruflo tools to your client. The console and mods above are Claude Code integrations; hook support depends on the client.
51
-
52
- [Compare install paths](#quick-start) · [Open the console](#console-walkthrough) · [User guide](docs/USERGUIDE.md)
53
-
54
- <div align="center">
55
-
56
-
57
- ### Optional: ruOS Desktop
58
-
59
- <a href="https://ruos.cognitum.one"><img src="ruflo/assets/ruos-animated.svg" alt="ruOS — A desktop that runs itself" width="100%"></a>
60
-
61
- **Connect ruOS to ChatGPT or Claude via MCP:**
62
-
63
- ```text
64
- https://ruos.cognitum.one/mcp
65
- ```
66
-
67
-
68
-
69
- <!-- RuVector promo -->
70
- <a href="https://github.com/ruvnet/ruvector"><img src="docs/assets/readme/ruvector-promo-depth.svg" width="100%" alt="RuVector: Give your agents memory. Local vector search, persistent context, graph relationships and feedback learning. Explore RuVector."></a>
71
-
72
- ```bash
73
- npx ruvector
74
- ```
75
-
76
-
77
-
10
+ <!-- Ecosystem strip (collapsed visually with flat-square) -->
11
+ [![🕸️ RuVector Agentic DB](https://img.shields.io/badge/RuVector_Agentic-DB-06b6d4?style=flat-square&logoColor=white&logo=graphql)](https://github.com/ruvnet/ruvector)
12
+ [![Ecosystem downloads](https://img.shields.io/badge/ecosystem%20downloads-8.1M%2B-blue?style=flat-square&logo=npm)](https://github.com/ruvnet/ruflo/blob/main/data/clone-data.proof.json)
13
+ [![Git clones (14d)](https://img.shields.io/badge/git%20clones%2014d-106k-blueviolet?style=flat-square&logo=github)](https://github.com/ruvnet/ruflo/blob/main/data/clone-data.ledger.json)
14
+ [![Claude Code](https://img.shields.io/badge/Claude%20Code-Plugin-D97757?style=flat-square&logoColor=white&logo=anthropic)](https://github.com/ruvnet/claude-flow)
15
+ [![Codex Plugin](https://img.shields.io/badge/Codex-Plugin-412991?style=flat-square&logoColor=white&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI%2BPHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0yMi4yODIgOS44MjFhNS45ODUgNS45ODUgMCAwIDAtLjUxNi00LjkxIDYuMDQ2IDYuMDQ2IDAgMCAwLTYuNTEtMi45QTYuMDY1IDYuMDY1IDAgMCAwIDQuOTgxIDQuMThhNS45ODUgNS45ODUgMCAwIDAtMy45OTggMi45IDYuMDQ2IDYuMDQ2IDAgMCAwIC43NDMgNy4wOTcgNS45OCA1Ljk4IDAgMCAwIC41MSA0LjkxMSA2LjA1MSA2LjA1MSAwIDAgMCA2LjUxNSAyLjlBNS45ODUgNS45ODUgMCAwIDAgMTMuMjYgMjRhNi4wNTYgNi4wNTYgMCAwIDAgNS43NzItNC4yMDYgNS45OSA1Ljk5IDAgMCAwIDMuOTk4LTIuOSA2LjA1NiA2LjA1NiAwIDAgMC0uNzQ3LTcuMDczek0xMy4yNiAyMi40M2E0LjQ3NiA0LjQ3NiAwIDAgMS0yLjg3Ni0xLjA0bC4xNDItLjA4IDQuNzc4LTIuNzU4YS43OTUuNzk1IDAgMCAwIC4zOTMtLjY4MXYtNi43MzdsMi4wMiAxLjE2OGEuMDcxLjA3MSAwIDAgMSAuMDM4LjA1MnY1LjU4M2E0LjUwNCA0LjUwNCAwIDAgMS00LjQ5NSA0LjQ5NHpNMy42IDE4LjMwNGE0LjQ3IDQuNDcgMCAwIDEtLjUzNS0zLjAxNGwuMTQyLjA4NSA0Ljc4MyAyLjc1OWEuNzcxLjc3MSAwIDAgMCAuNzgxIDBsNS44NDMtMy4zNjl2Mi4zMzJhLjA4LjA4IDAgMCAxLS4wMzMuMDYyTDkuNzQgMTkuOTVhNC41IDQuNSAwIDAgMS02LjE0LTEuNjQ2ek0yLjM0IDcuODk2YTQuNDg1IDQuNDg1IDAgMCAxIDIuMzY2LTEuOTczVjExLjZhLjc2Ni43NjYgMCAwIDAgLjM4OC42NzdsNS44MTUgMy4zNTQtMi4wMiAxLjE2OGEuMDc2LjA3NiAwIDAgMS0uMDcyIDBsLTQuODMtMi43ODZBNC41MDQgNC41MDQgMCAwIDEgMi4zNCA3Ljg3MnptMTYuNTk3IDMuODU1LTUuODMzLTMuMzg3IDIuMDE2LTEuMTY1YS4wNzYuMDc2IDAgMCAxIC4wNzEgMGw0LjgzIDIuNzkxYTQuNDk0IDQuNDk0IDAgMCAxLS42NzYgOC4xMDR2LTUuNjc3YS43OS43OSAwIDAgMC0uNDA3LS42Njd6bTIuMDEtMy4wMjMtLjE0MS0uMDg1LTQuNzc0LTIuNzgyYS43NzYuNzc2IDAgMCAwLS43ODUgMEw5LjQwOSA5LjIzVjYuODk3YS4wNjYuMDY2IDAgMCAxIC4wMjgtLjA2Mmw0LjgzLTIuNzg3YTQuNDk5IDQuNDk5IDAgMCAxIDYuNjggNC42NnpNOC4zMDcgMTIuODYzbC0yLjAyLTEuMTY0YS4wOC4wOCAwIDAgMS0uMDM4LS4wNTdWNi4wNzRhNC40OTkgNC40OTkgMCAwIDEgNy4zNzYtMy40NTRsLS4xNDIuMDgtNC43NzggMi43NThhLjc5NS43OTUgMCAwIDAtLjM5My42ODJ6bTEuMDk3LTIuMzY2IDIuNjAyLTEuNSAyLjYwNyAxLjV2Mi45OTlsLTIuNTk3IDEuNS0yLjYwNy0xLjVaIi8%2BPC9zdmc%2B)](https://www.npmjs.com/package/@claude-flow/codex)
78
16
 
79
17
  # Ruflo
80
18
 
81
- [English](README.md) · [简体中文](README.zh-CN.md)
82
-
19
+ **An agent meta-harness for Claude Code and Codex.**
83
20
 
84
21
  [![RuFlo Explained — build an AI team that plans, remembers, tests, and improves](docs/assets/ruflo-explained/ch14.jpg)](docs/ruflo-explained.md)
85
22
 
@@ -92,16 +29,13 @@ A 14-chapter guide: from the basic idea to a first useful task, then memory, age
92
29
 
93
30
  One `npx ruflo init` gives Claude Code a nervous system: agents self-organize into swarms, learn from every task, remember across sessions, and — with federation — securely talk to agents on other machines without leaking data. You keep writing code. Ruflo handles the coordination.
94
31
 
95
- <p align="center"><img src="docs/assets/readme/learning-cinematic-compact.svg" width="100%" alt="Ruflo trajectory learning: branching memory paths, outcome feedback, contrastive AI and local learning. No LLM required for local vector retrieval and contrastive updates; agent execution may still use an LLM."></p>
96
-
97
- <sub>Conceptual learning loop. Local vector retrieval and contrastive updates can run without an LLM; embeddings and configured learning modules are still required. See the <a href="v3/@claude-flow/cli/src/services/ruvector-training.ts">RuVector training integration</a> and <a href="v3/@claude-flow/neural/src/modes/balanced.ts">trajectory contrastive learning</a>.</sub>
98
-
99
- <details>
100
- <summary>Architecture in text</summary>
101
-
102
- User → Ruflo (CLI/MCP) → Router → Swarm → Agents → Memory → LLM providers. Memory feeds useful experience back into routing. This is a conceptual flow, not a live execution trace.
32
+ ```
33
+ Self-Learning / Self-Optimizing Agent Architecture
103
34
 
104
- </details>
35
+ User --> Ruflo (CLI/MCP) --> Router --> Swarm --> Agents --> Memory --> LLM Providers
36
+ ^ |
37
+ +---- Learning Loop <-------+
38
+ ```
105
39
 
106
40
  > **New to Ruflo?** You don't need to learn 314 MCP tools or 26 CLI commands. After `init`, just use Claude Code normally — the hooks system automatically routes tasks, learns from successful patterns, and coordinates agents in the background.
107
41
 
@@ -114,50 +48,10 @@ User → Ruflo (CLI/MCP) → Router → Swarm → Agents → Memory → LLM prov
114
48
 
115
49
  ---
116
50
 
117
- <p align="center"><img src="docs/assets/readme/console.svg" alt="Mission control: inspect agent work" width="100%"></p>
118
-
119
- <p align="center"><img src="docs/assets/ruflo-console-workflows.svg" width="952" height="964" alt="An animated recording of the ruflo console inside Claude Code: the boot (the neon sign and every area checked), then the Workflows page on a sample run: phases and agents with model, tokens and time; drilling from a run into one agent's activity, log and result; search; failure triage; cost; replay and compare; the control tab with a confirm card; and the mission autopilot panel"></p>
120
-
121
- <img src="docs/assets/readme/console-icon-workflows.svg" width="28" height="28" alt=""> **Your agent cockpit.** Track workflows, agents, models, tokens and cost beside Claude Code. The animation shows startup checks and a **sample workflow**, not a live session.
122
-
123
- <img src="docs/assets/readme/console-icon-inspect.svg" width="28" height="28" alt=""> **Inspect any run.** Open agent logs and results, search, triage failures, replay and compare. Start with `npx ruflo init`, restart Claude Code, then `/ruflo`. [Full console tour](docs/assets/ruflo-console-walkthrough-wide.gif).
124
-
125
- <img src="docs/assets/readme/console-icon-control.svg" width="28" height="28" alt=""> **Let Claude drive. You set the limits.** Enable **Settings → Claude control** to navigate and run console actions. Choose `read`, `write`, `manage` or `full`, with `ask` or `auto` approval. The current default is **read + ask**; raising the level is your choice. Actions above your permission level are refused, and network, spending and destructive actions require confirmation even in `auto`. Review the live action log or press **Take back control** to stop Claude control. [Details](v3/docs/adr/ADR-444-claude-controls-the-console.md).
126
-
127
- <a id="console-walkthrough"></a>
128
-
129
- ### One task: create a mission with Claude
130
-
131
- <img src="docs/assets/readme/console-icon-workflows.svg" width="28" height="28" alt=""> **Watch the recorded console session below.** Claude creates a mission, opens the Learning and Security pages, and reports its actions in Overview.
132
-
133
- 1. **Set the boundary.** Install the console using the commands below, open `/ruflo`, then choose **Settings → Claude control → write + ask**.
134
- 2. **Give a concrete request.** Try: “Create a mission to add a dark mode toggle. Show me the mission and its status.”
135
- 3. **Approve creation.** Claude opens Missions and sets the goal. Confirm the pending create action in the console.
136
- 4. **Verify the result.** Check that Missions contains the goal and Overview records the action. Creating a mission does not mean the feature has been implemented.
137
- 5. **Keep control.** **Take back control** pauses Claude's console tools. A later call should be refused until you restore control.
138
-
139
- **What the recording demonstrates:** a real Claude Haiku session with `write + auto`, mission creation, page navigation, a refused swarm stop, and control being taken back. The steps above use `ask` so you approve creation yourself. The separate workflow animation uses sample data; neither is evidence of completed swarm work or memory recall.
140
-
141
- [Implementation and recorded test findings](v3/docs/adr/ADR-444-claude-controls-the-console.md) · [Reproduction script](plugins/ruflo-console/scripts/e2e-control.sh)
142
-
143
- <p align="center"><img src="docs/assets/ruflo-console-claude-control.gif" alt="Claude Code with the ruflo console beside it: Claude sets a mission goal, creates the mission and opens the Learning, Security and Overview pages through the console tools; the Claude control dashboard logs each action; swarm-stop is refused because it needs the full level; the person clicks Take back control and the next request is refused"></p>
144
-
145
-
146
- **Install the mods from the ruflo marketplace** (Claude Code 2.1.287 or later; mods run with your account's permissions and are not sandboxed, so read the code first):
147
-
148
- ```text
149
- /plugin marketplace add ruvnet/ruflo
150
- /plugin install ruflo-console@ruflo
151
- /plugin install ruflo-mods@ruflo
152
- /reload-plugins
153
- ```
154
-
155
- `ruflo-console` is the cockpit above, `ruflo-mods` routes prompts and enforces policy in-process, `ruflo-swarm` shows the swarm in a pane, and `ruflo-ruos` adds the ruOS status segment. Open `/plugin` to confirm they appear in the active mods line. Inside the console, `/ruflo market` is the Plugin Catalog: every ruflo plugin, mod and skill with what it ships, and buttons to install, enable, disable and update (each asks first).
51
+ ![Ruflo Plugins](./ruflo-plugins.gif)
156
52
 
157
53
  ## Quick Start
158
54
 
159
- <p align="center"><img src="docs/assets/readme/quick-start.svg" alt="Start building with Ruflo" width="100%"></p>
160
-
161
55
  There are **two different install paths** with very different surface areas. Pick based on what you need (#1744):
162
56
 
163
57
  | | **Claude Code Plugin** | **CLI install (`npx ruflo init`)** |
@@ -268,7 +162,7 @@ This adds slash commands and agent definitions. `ruflo-core` (installed above) d
268
162
 
269
163
  </details>
270
164
 
271
- ### <img src="docs/assets/readme/icons/terminal.svg" width="28" height="28" alt=""> CLI Install
165
+ ### CLI Install
272
166
 
273
167
  **macOS / Linux / WSL / Git-Bash:**
274
168
 
@@ -292,50 +186,68 @@ npm install -g ruflo@latest
292
186
 
293
187
  > 💡 **Windows users:** the `curl ... | bash` form needs a POSIX shell (Git-Bash, WSL, MSYS). The `npx ruflo@latest init wizard` line works natively in PowerShell and cmd. If you hit an `'bash' is not recognized` error, use the `npx` line instead — both end up running the same init flow.
294
188
 
295
- ### <img src="docs/assets/readme/icons/network.svg" width="28" height="28" alt=""> MCP Server
189
+ ### MCP Server
296
190
 
297
191
  ```bash
298
192
  # Add Ruflo as an MCP server in Claude Code
299
193
  claude mcp add claude-flow -- npx ruflo@latest mcp start
300
194
  ```
301
195
 
302
- ---
196
+ #### HTTP transport security
303
197
 
304
- ## What You Get
198
+ `ruflo mcp start -t http` exposes every registered tool over HTTP (`/rpc`, `/mcp`, `/ws`). The default `stdio` transport is not affected.
305
199
 
306
- <p align="center"><img src="docs/assets/readme/capabilities.svg" alt="Your agent toolkit" width="100%"></p>
200
+ | Setting | Effect |
201
+ |---|---|
202
+ | `RUFLO_MCP_HTTP_TOKEN=<token>` | Require `Authorization: Bearer <token>` on every request. Failure is a bare `401`. The token is compared in constant time and is never logged. Prefer this over `--auth-token`, which is visible in `ps`. |
203
+ | `--auth-token-file <path>` | Read the token from a file (one line). Takes precedence over the env var. |
204
+ | `--auth-token <token>` | Same, on the command line (visible in argv; highest precedence). |
205
+ | `RUFLO_MCP_ALLOW_UNAUTHENTICATED_HTTP=1` | Allow an unauthenticated bind to a non-loopback `--host`. Only for a trusted network boundary or an authenticating reverse proxy. |
307
206
 
308
- <table>
309
- <tr><td width="50%"><a href="plugins/ruflo-swarm/README.md"><img src="docs/assets/readme/card-swarm.svg" width="100%" alt="Agent teams"></a></td><td width="50%"><a href="plugins/ruflo-rag-memory/README.md"><img src="docs/assets/readme/card-memory.svg" width="100%" alt="Persistent memory"></a></td></tr>
310
- <tr><td width="50%"><a href="plugins/ruflo-intelligence/README.md"><img src="docs/assets/readme/card-learning.svg" width="100%" alt="Learning loops"></a></td><td width="50%"><a href="plugins/ruflo-security-audit/README.md"><img src="docs/assets/readme/card-security.svg" width="100%" alt="Security controls"></a></td></tr>
311
- <tr><td width="50%"><a href="https://ruvnet.github.io/ruflo"><img src="docs/assets/readme/card-plugins.svg" width="100%" alt="Plugin marketplace"></a></td><td width="50%"><a href="plugins/ruflo-ruvllm/README.md"><img src="docs/assets/readme/card-routing.svg" width="100%" alt="Models and routing"></a></td></tr>
312
- </table>
207
+ A token must be 16-512 printable ASCII characters (no spaces). `GET /health` stays public and returns only `{"status":"ok"}` when a token is set. Tokens are supported for `-t http` only; `-t websocket` rejects one.
313
208
 
314
- | Capability | Description |
315
- |------------|-------------|
316
- | <img src="docs/assets/readme/icons/agents.svg" width="28" height="28" alt=""> **100+ Agents** | Specialized agents for coding, testing, security, docs, architecture |
317
- | <img src="docs/assets/readme/icons/network.svg" width="28" height="28" alt=""> **Comms Layer** | Zero-trust federation — agents across machines/orgs discover, authenticate, and exchange work securely |
318
- | <img src="docs/assets/readme/icons/swarm.svg" width="28" height="28" alt=""> **Swarm Coordination** | Hierarchical, mesh, and adaptive topologies with consensus |
319
- | <img src="docs/assets/readme/icons/learning.svg" width="28" height="28" alt=""> **Self-Learning** | SONA neural patterns, ReasoningBank, trajectory learning |
320
- | <img src="docs/assets/readme/icons/memory.svg" width="28" height="28" alt=""> **Vector Memory** | HNSW-indexed AgentDB — measured ~1.9x faster at N=20k, ~3.2x–4.7x at N=5k vs brute force (recall@10 ~0.99); ANN wins above the crossover, ties/loses at small N. See [audit](docs/reviews/intelligence-system-audit-2026-05-29.md) + [`scripts/benchmark-intelligence.mjs`](scripts/benchmark-intelligence.mjs) |
321
- | <img src="docs/assets/readme/icons/workers.svg" width="28" height="28" alt=""> **Background Workers** | 12 auto-triggered workers (audit, optimize, testgaps, etc.) |
322
- | <img src="docs/assets/readme/icons/plugins.svg" width="28" height="28" alt=""> **Plugin Marketplace** | 33 native Claude Code plugins + 21 npm plugins |
323
- | <img src="docs/assets/readme/icons/routing.svg" width="28" height="28" alt=""> **Multi-Provider** | Claude, GPT, Gemini, Cohere, Ollama with smart routing |
324
- | <img src="docs/assets/readme/icons/security.svg" width="28" height="28" alt=""> **Security** | AIDefence, input validation, CVE remediation, path traversal prevention |
325
- | <img src="docs/assets/readme/icons/federation.svg" width="28" height="28" alt=""> **Agent Federation** | Cross-installation agent collaboration with zero-trust security |
326
- | <img src="docs/assets/readme/icons/audit.svg" width="28" height="28" alt=""> **[MetaHarness](docs/metaharness-user-guide.md)** | Audit your AI agent setup before you ship. Grade readiness (1-100), scan tool configs for security issues, snapshot the whole project to catch regressions over time, and find templates that match your repo. `ruflo eject` turns a ruflo project into a standalone agent toolkit with its own name. [Full guide](docs/metaharness-user-guide.md). |
209
+ | `--host` | no token | token set |
210
+ |---|---|---|
211
+ | `localhost`, `127.0.0.1`, `::1` | starts, **unauthenticated** | starts, token required |
212
+ | anything else (`0.0.0.0`, `::`, a LAN IP, `127.0.0.2`, `[::1]`, `LOCALHOST`) | **refuses to start** unless `RUFLO_MCP_ALLOW_UNAUTHENTICATED_HTTP=1` | starts, token required |
327
213
 
328
- ### <img src="docs/assets/readme/icons/learning.svg" width="28" height="28" alt=""> Learning from experience
214
+ Without a token, a loopback server is still unauthenticated: any process on the machine, and any web page that can reach it via DNS rebinding, can call tools. Set `RUFLO_MCP_HTTP_TOKEN` whenever the HTTP transport is used.
329
215
 
330
- <p align="center"><img src="docs/assets/readme/learning-flow.svg" width="100%" alt="Recall, execute, evaluate, store, adapt and reuse: an illustrative agent learning cycle."></p>
216
+ **Upgrading:** binding off loopback (for example `--host 0.0.0.0` in Docker) now needs a token or the opt-out above; otherwise the server exits with an error.
331
217
 
332
- Useful trajectories and task feedback can inform future work. Results depend on the configured memory, learning components and quality of feedback. [Learning plugin](plugins/ruflo-intelligence/README.md).
218
+ ---
333
219
 
334
- ### Agent Federation — Slack for Agents
220
+ ## What You Get
335
221
 
336
- <p align="center"><img src="docs/assets/readme/federation.svg" alt="Connected intelligence across machines" width="100%"></p>
222
+ | Capability | Description |
223
+ |------------|-------------|
224
+ | 🤖 **100+ Agents** | Specialized agents for coding, testing, security, docs, architecture |
225
+ | 📡 **Comms Layer** | Zero-trust federation — agents across machines/orgs discover, authenticate, and exchange work securely |
226
+ | 🐝 **Swarm Coordination** | Hierarchical, mesh, and adaptive topologies with consensus |
227
+ | 🧠 **Self-Learning** | SONA neural patterns, ReasoningBank, trajectory learning |
228
+ | 💾 **Vector Memory** | HNSW-indexed AgentDB — measured ~1.9x faster at N=20k, ~3.2x–4.7x at N=5k vs brute force (recall@10 ~0.99); ANN wins above the crossover, ties/loses at small N. See [audit](docs/reviews/intelligence-system-audit-2026-05-29.md) + [`scripts/benchmark-intelligence.mjs`](scripts/benchmark-intelligence.mjs) |
229
+ | ⚡ **Background Workers** | 12 auto-triggered workers (audit, optimize, testgaps, etc.) |
230
+ | 🧩 **Plugin Marketplace** | 33 native Claude Code plugins + 21 npm plugins |
231
+ | 🔌 **Multi-Provider** | Claude, GPT, Gemini, Cohere, Ollama with smart routing |
232
+ | 🛡️ **Security** | AIDefence, input validation, CVE remediation, path traversal prevention |
233
+ | 🌐 **Agent Federation** | Cross-installation agent collaboration with zero-trust security |
234
+ | 🔬 **[MetaHarness](docs/metaharness-user-guide.md)** | Audit your AI agent setup before you ship. Grade readiness (1-100), scan tool configs for security issues, snapshot the whole project to catch regressions over time, and find templates that match your repo. `ruflo eject` turns a ruflo project into a standalone agent toolkit with its own name. [Full guide](docs/metaharness-user-guide.md). |
337
235
 
338
- <p align="center"><img src="docs/assets/readme/federation-flow.svg" width="100%" alt="Outbound agent, data filtering, signing and encryption, identity verification, input checks and receiving agent."></p>
236
+ ### Agent Federation — Slack for Agents
237
+
238
+ ```
239
+ Your Agent --> [ Remove secrets ] --> [ Sign message ] --> [ Encrypted channel ]
240
+ Emails, SSNs, Proves it came No one reads it
241
+ keys stripped from you in transit
242
+ |
243
+ v
244
+ Their Agent <-- [ Block attacks ] <-- [ Check identity ] <------+
245
+ Stops prompt Rejects forgeries
246
+ injection
247
+
248
+ Audit trail on both sides.
249
+ Trust builds over time. Bad behavior = instant downgrade.
250
+ ```
339
251
 
340
252
  Slack gave teams channels. Federation gives agents the same thing — **shared workspaces across trust boundaries**, where agents on different machines, orgs, or cloud regions can discover each other, prove who they are, and collaborate on tasks.
341
253
 
@@ -437,8 +349,6 @@ User --> Claude Code / CLI
437
349
 
438
350
  ## Documentation
439
351
 
440
- <p align="center"><img src="docs/assets/readme/documentation.svg" alt="Guides, architecture and verification" width="100%"></p>
441
-
442
352
  Four docs for four audiences:
443
353
 
444
354
  | Doc | When to read it |
@@ -469,8 +379,6 @@ User Guide section index:
469
379
 
470
380
  ## Support
471
381
 
472
- <p align="center"><img src="docs/assets/readme/support.svg" alt="Build with the Ruflo community" width="100%"></p>
473
-
474
382
  | Resource | Link |
475
383
  |----------|------|
476
384
  | Documentation | [User Guide](docs/USERGUIDE.md) |
@@ -479,10 +387,6 @@ User Guide section index:
479
387
  | Community | [Agentics Foundation Discord](https://discord.com/invite/dfxmpwkG2D) |
480
388
  | Powered by | [Cognitum.one](https://cognitum.one) |
481
389
 
482
- <p align="center"><img src="docs/assets/readme/signal-divider.svg" alt="Ruflo" width="100%"></p>
483
-
484
390
  ## License
485
391
 
486
392
  MIT - [RuvNet](https://github.com/ruvnet)
487
-
488
- <a href="https://cognitum.one"><img src="docs/assets/readme/cognitum-banner-v2.svg" width="100%" alt="Cognitum One: Ambient Intelligence at the edge of the Physical World. Explore cognitum.one."></a>
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "generation": 7,
4
- "generatedAt": "2026-10-09T21:52:00.476Z",
5
- "gitSha": "8c60c8c7",
3
+ "generation": 6,
4
+ "generatedAt": "2026-09-17T21:28:47.530Z",
5
+ "gitSha": "702d1461",
6
6
  "catalog": {
7
- "agents": 176,
8
- "tools": 423,
7
+ "agents": 167,
8
+ "tools": 418,
9
9
  "skills": 34
10
10
  },
11
11
  "benchmark": null
@@ -9,6 +9,7 @@ import { existsSync, readFileSync, statSync, openSync, readSync, closeSync } fro
9
9
  import { join, dirname } from 'path';
10
10
  import { fileURLToPath, pathToFileURL } from 'url';
11
11
  import { createHash } from 'crypto';
12
+ import { ownInstallAncestors } from '../plugins/own-install.js';
12
13
  import { execSync, exec, execFile } from 'child_process';
13
14
  import { promisify } from 'util';
14
15
  import { decodeKey, isEncryptionEnabled } from '../encryption/vault.js';
@@ -2045,26 +2046,19 @@ async function checkMetaharnessIntegration() {
2045
2046
  // `dist/src/commands/doctor.js` (built) or `src/commands/doctor.ts`
2046
2047
  // (dev) until we find a directory containing `plugins/ruflo-metaharness/`.
2047
2048
  const candidates = [];
2048
- // Strategy 1: walk up from this module's own URL — covers npx + global install.
2049
+ // Walk up from this module's own URL — covers npx, global and project-local
2050
+ // installs and monorepo dev. The plugin found here is imported below, so it
2051
+ // must come from this CLI's own install, never from the cwd (the project).
2049
2052
  try {
2053
+ // Bounded at node_modules: a project-local install must not reach the project.
2050
2054
  const selfDir = dirname(fileURLToPath(import.meta.url));
2051
- let q = selfDir;
2052
- for (let i = 0; i < 8; i++) {
2055
+ for (const q of ownInstallAncestors(selfDir)) {
2053
2056
  candidates.push(join(q, 'plugins', 'ruflo-metaharness'));
2054
- q = dirname(q);
2055
2057
  }
2056
2058
  }
2057
2059
  catch {
2058
- // import.meta.url unavailable under some bundlers — fall through to cwd walk.
2059
- }
2060
- // Strategy 2: walk up from cwd — covers monorepo dev (running from a sub-package).
2061
- let p = process.cwd();
2062
- for (let i = 0; i < 8; i++) {
2063
- candidates.push(join(p, 'plugins', 'ruflo-metaharness'));
2064
- p = dirname(p);
2060
+ // import.meta.url unavailable under some bundlers — the plugin is reported absent.
2065
2061
  }
2066
- // Strategy 3: explicit node_modules path relative to cwd — covers project-local install.
2067
- candidates.push(join(process.cwd(), 'node_modules', '@claude-flow', 'cli', 'plugins', 'ruflo-metaharness'));
2068
2062
  let pluginDir = null;
2069
2063
  for (const c of candidates) {
2070
2064
  if (existsSync(join(c, 'scripts', '_harness.mjs'))) {
@@ -4171,18 +4171,15 @@ const tokenOptimizeCommand = {
4171
4171
  try {
4172
4172
  // Check if agentic-flow v3 is available
4173
4173
  const rb = await import('agentic-flow/reasoningbank').catch(() => null);
4174
+ // No root-entry fallback: importing 'agentic-flow' runs its CLI main()
4175
+ // in 3.0.0-alpha.x, and the root re-exports this same reasoningbank
4176
+ // module, so it cannot load when this subpath did not.
4174
4177
  if (rb) {
4175
4178
  agenticFlowAvailable = true;
4176
4179
  if (typeof rb.retrieveMemories === 'function') {
4177
4180
  reasoningBank = rb;
4178
4181
  }
4179
4182
  }
4180
- else {
4181
- // Legacy check for older agentic-flow
4182
- const af = await import('agentic-flow').catch(() => null);
4183
- if (af)
4184
- agenticFlowAvailable = true;
4185
- }
4186
4183
  const versionLabel = agenticFlowAvailable ? `agentic-flow v3 detected (ReasoningBank: ${reasoningBank ? 'active' : 'unavailable'})` : 'agentic-flow not available (using fallbacks)';
4187
4184
  spinner.succeed(versionLabel);
4188
4185
  output.writeln();
@@ -50,16 +50,9 @@ async function resolveCodexInitializer(cwd) {
50
50
  const resolutionStrategies = [
51
51
  // Strategy 1: Direct import (works if installed as CLI dependency)
52
52
  async () => (await import(codexModuleId)).CodexInitializer,
53
- // Strategy 2: Project node_modules (works if installed in user's project)
54
- async () => {
55
- const projectPath = path.join(cwd, 'node_modules', '@claude-flow', 'codex', 'dist', 'index.js');
56
- if (fs.existsSync(projectPath)) {
57
- const mod = await import(`file://${projectPath}`);
58
- return mod.CodexInitializer;
59
- }
60
- throw new Error('Not found in project');
61
- },
62
- // Strategy 3: Global node_modules
53
+ // (No project node_modules strategy: init must not import code the
54
+ // target project supplies.)
55
+ // Strategy 2: Global node_modules
63
56
  async () => {
64
57
  const { execSync } = await import('child_process');
65
58
  const globalPath = execSync('npm root -g', { encoding: 'utf-8' }).trim();
@@ -38,6 +38,8 @@ import { spawnSync } from 'child_process';
38
38
  import { existsSync, readFileSync } from 'fs';
39
39
  import { join, dirname, resolve } from 'path';
40
40
  import { fileURLToPath } from 'url';
41
+ import { homedir } from 'os';
42
+ import { ownPluginDirs } from '../plugins/own-install.js';
41
43
  import { runFlywheelWorker } from '../services/harness-flywheel-runtime.js';
42
44
  import { listFlywheelReceipts, promoteFlywheelCandidate, readFlywheelTransactionState, resetSequentialEvidence, verifyFlywheelLedger, } from '../services/flywheel-transaction.js';
43
45
  import { evaluatePolicyRequest } from '../services/policy-runtime.js';
@@ -213,20 +215,13 @@ async function dispatchFlywheel(operation, positional, flags) {
213
215
  * `prepublishOnly`).
214
216
  */
215
217
  function locatePluginScripts(requiredScript) {
216
- const candidates = [];
217
- // Up from the cli dist dir
218
- let p = resolve(__dirname);
219
- for (let i = 0; i < 8; i++) {
220
- candidates.push(join(p, 'plugins', 'ruflo-metaharness', 'scripts'));
221
- candidates.push(join(p, '..', 'plugins', 'ruflo-metaharness', 'scripts'));
222
- p = dirname(p);
223
- }
224
- // Also try from cwd (covers the "npx ruflo" case where the user is
225
- // sitting in their own repo and `npx ruflo metaharness score` should
226
- // score THAT repo using the LOCAL plugin if present).
227
- const cwd = process.cwd();
228
- candidates.push(join(cwd, 'plugins', 'ruflo-metaharness', 'scripts'));
229
- candidates.push(join(cwd, 'node_modules', '@claude-flow', 'cli', 'plugins', 'ruflo-metaharness', 'scripts'));
218
+ // Up from the cli dist dir, bounded at node_modules: a project-local install
219
+ // must not reach the project.
220
+ const candidates = ownPluginDirs(__dirname, 'ruflo-metaharness', 'scripts');
221
+ // The scripts are executed, so they come from this CLI's own install (or the
222
+ // user's marketplace checkout), never from the cwd: scoring a repo must not
223
+ // run plugin code that repo supplies. The repo is still the scoring target.
224
+ candidates.push(join(homedir(), '.claude', 'plugins', 'marketplaces', 'ruflo', 'plugins', 'ruflo-metaharness', 'scripts'));
230
225
  for (const c of candidates) {
231
226
  if (!existsSync(join(c, '_harness.mjs')))
232
227
  continue;