mirror of
https://github.com/ruvnet/ruflo.git
synced 2026-09-14 14:01:28 +08:00
3b0dc837af
* chore(quality-sweep): T1/T3/T5 — dep dedup, dead script removal, stale comment T1 (dead-code — cli): - Remove @claude-flow/memory, @claude-flow/embeddings, @claude-flow/security from `dependencies` section of v3/@claude-flow/cli/package.json. All three are dynamic imports only (await import(…)) and belong solely in `optionalDependencies`. Listing them in both sections triggers the npm 11.x arborist dedupe crash documented in issues #1147 / #2018. T3 (stale scripts): - Delete scripts/regenerate-witness.mjs — standalone implementation that writes to verification.md.json at repo root (file does not exist; the per-OS verification/{os}/manifest.md.json layout landed in a later ADR). No CI reference, no caller. scripts/regen-witness.mjs is the canonical delegating wrapper and is kept. T5 (placeholder claims): - Remove stale "Code subcommand (placeholder for future code analysis)" comment from src/commands/analyze.ts — the command is fully implemented (LOC/TODO/ complexity/security analysis). The comment was left over from an old stub. Tests: 1999 passing | 46 skipped (unchanged). Co-Authored-By: RuFlo <ruv@ruv.net> * chore(quality-sweep): T7/T10 — remove trivial assertion, tighten protobufjs override T7 (test honesty): - Remove expect(true).toBe(true) in coverage-router.test.ts catch block. The catch handled "format not supported is acceptable" — the no-op assertion was misleading (test passed trivially). Replaced with a comment-only path so the intent is visible without fabricating a passing assertion. T10 (dependency hygiene — protobufjs critical): - Add overrides.protobufjs = >=7.5.6 to v3/@claude-flow/cli/package.json. GHSA-xq3m-2v4x-88gg (critical, CVSS 9.8) affects <7.5.5. GHSA-66ff-xgx4-vchm (high) and GHSA-2pr8-phx7-x9h3 (moderate) affect <=7.5.5. The 7.5.4 transitive from @opentelemetry/otlp-transformer (via agentdb optional) and onnxruntime-node (via @xenova/transformers optional) is now forced to 7.5.6+. - Tighten ruflo/package.json overrides.protobufjs from >=7.5.5 to >=7.5.6 to cover the two additional advisories. Tests: 1999 passing | 46 skipped (unchanged). Co-Authored-By: RuFlo <ruv@ruv.net> * chore(quality-sweep): T9 — update STATUS.md to 3.10.x reality; T8 done T9 (docs vs reality): - STATUS.md was pointing at branch fix/issues-may-1-3 / ruflo@3.6.24 (stale). Updated snapshot reference to ruflo@3.10.2 / @claude-flow/cli@3.10.1 @cdd5308d8. - Corrected MCP tool count: 300 (3.6.x claim) -> 323 (actual unique tool names verified by grepping name: fields in src/mcp-tools/**/*.ts). - Corrected CLI command count: 49 (stale) -> 45 (actual: 10 core sync + 35 lazy loaders in src/commands/index.ts). - Updated test baseline: 1933 -> 1999 passing. T8 (ADR vs implementation drift) — confirmed clean: - All .ts/.mjs/.cjs/.json file paths cited in ADR-120 through ADR-130 verified to exist in the working tree. False positives from .js regex truncation of .json were investigated and eliminated. No real drift found. docs/QUALITY-SWEEP.md: - Session 1 summary written with commit SHAs. - Territory table updated with actual statuses. Tests: 1999 passing | 46 skipped (unchanged). Co-Authored-By: RuFlo <ruv@ruv.net> * chore(quality-sweep): T2/T5 — plugin audit clean; link stub issue T2 (dead-code sweep — plugins): - All 34 plugin dirs scanned. No duplicate skill names, no dead scripts. - All skill-referenced scripts (ruflo-core/witness/*, ruflo-cost-tracker/scripts/*, ruflo-adr/scripts/*) verified to exist. - ruflo-graph-intelligence is a proper TS library package (not a skills plugin) — 0 skill files is correct, not a gap. - stray plugins/ruvector.db confirmed gitignored (not tracked). - T2 closed. T5 (mocked/placeholder claims): - Add issue #2140 reference to coordination_orchestrate's _note field so the honest stub has a tracked follow-up path. The "executor: none" behavior is intentional per ADR-093 F7 but now has a concrete issue to track completion. T10 (high vuln triage, completing the analysis): - All 25 high severity packages traced: - vite: transitive from vitest (devDep) — not in production build - axios: transitive from agentic-flow (optional dep) - hono, fast-uri: transitive from agentdb (optional dep) - Most others: transitive from @opentelemetry/* (optional via agentdb) or @xenova/transformers (optional via @claude-flow/embeddings) - ruflo/package.json already overrides @hono/node-server, @isaacs/brace-expansion, flatted, tar, picomatch, path-to-regexp, undici, minimatch, cacache, make-fetch-happen, express-rate-limit - Remaining: agentdb/agentic-flow/vite/axios/sqlite3 all optional-only paths. No direct production dependency vulnerability is unaddressed. Tests: 1999 passing | 46 skipped (unchanged). Co-Authored-By: RuFlo <ruv@ruv.net> * chore(quality-sweep): T11 — witness regen + final territory closures T11 (witness pass): - Ran node scripts/regen-witness.mjs to update manifest.md.json to HEAD commitff685013a(T2/T5/T10 sweep commit). - smoke-witness-marker-drift.mjs: 117 pass, 0 drifted, 0 file-missing. - verification/macos/manifest.md.json and history.jsonl updated. Territory closure update (docs/QUALITY-SWEEP.md): - T2: closed — plugins scan clean (0 violations) - T5: closed — all placeholder labels addressed - T10: closed — all 25 high vulns traced to optional/dev transitive deps; critical protobufjs fixed; production dependency paths are clean - T11: closed — witness regen passes Tests: 1999 passing | 46 skipped (unchanged throughout all sweep commits). Co-Authored-By: RuFlo <ruv@ruv.net> * chore(ci): #2141-T3 — wire smoke-memory-no-stray-db to CI (ADR-125 P7) scripts/smoke-memory-no-stray-db.mjs existed in the repo but had no CI wiring, so ADR-125 Phase 7 (vitest.setup.ts wipes stray DB artifacts after npm test in @claude-flow/memory) was unguarded against regression. Changes: - .github/workflows/v3-ci.yml: add memory-no-stray-db-smoke job (ubuntu-latest, node 22, installs @claude-flow/memory deps, then runs node scripts/smoke-memory-no-stray-db.mjs) - on.push.paths: add smoke script + vitest config paths so the job triggers on relevant file changes - on.pull_request.paths: same entries for PR CI No source code changed. No test baseline impact. Co-Authored-By: RuFlo <ruv@ruv.net> * docs(status): #2141-T9 — correct plugin (32→33) and agent (43→45) counts STATUS.md capability table was derived from a stale audit pass. Direct filesystem counts at HEAD: plugins with .claude-plugin/plugin.json: 33 (ruflo-workflows is the 33rd — added since previous count) agent .md files in plugins/*/agents/: 45 (ruflo-workflows/agents/*.md and ruflo-neural-trader/agents/*.md contribute the delta) MCP tools (323) and CLI top-level commands (45) are unchanged from the quality-sweep audit. Co-Authored-By: RuFlo <ruv@ruv.net> * docs(sweep): #2138 — update QUALITY-SWEEP.md with session 2 final state Mark T3/T9 done. Update session log with session 2 commits. Update territory status table to reflect the actual completion state of all 11 territories after both sessions. T1 partial (66 dual exports tracked in #2141), T6 deferred to 3.12.0, T11 done (117 verified atff685013a). All others done. Co-Authored-By: RuFlo <ruv@ruv.net> * fix(ci): #2139 — memory no-stray-db smoke uses pnpm (workspace:* now in memory pkg) The smoke wired in the quality sweep used `cd v3/@claude-flow/memory && npm install`. The package's comment claimed it had no workspace:* deps, but it has since gained sibling workspace deps (likely @claude-flow/shared) — npm now errors with EUNSUPPORTEDPROTOCOL: Unsupported URL Type "workspace:". Same fix pattern as the #2120 memory smoke + #2132 windows-init smoke: pnpm install from v3/ + recursive build || true. Co-Authored-By: RuFlo <ruflo-bot@users.noreply.github.com> * fix(ci): #2139 — memory no-stray-db smoke needs install scripts for better-sqlite3 Previous fix used --ignore-scripts to dodge a side-effect of the workspace install, but that blocked better-sqlite3's prebuild-install postinstall, leaving the .node binding file absent. The smoke runs `npm test` inside @claude-flow/memory which opens a real sqlite DB via better-sqlite3 native bindings. Without the postinstall, every test errors with "Could not locate the bindings file" and the smoke fails with exit 1. Drop --ignore-scripts. Add explicit `pnpm rebuild better-sqlite3` as belt-and-suspenders. Co-Authored-By: RuFlo <ruflo-bot@users.noreply.github.com> * fix(smoke): #2139 — memory no-stray-db smoke ignores flaky perf test exits The smoke's contract is "no stray DB artifacts after the test run" — it runs npm test only for side effects (test bindings write/cleanup DB files), not to validate correctness. @claude-flow/memory has timing-sensitive HNSW perf assertions (e.g. "search latency < 200ms") that are flaky on slower CI runners (212ms observed). Demote non-zero test exit to a warning. The file-leak check below is what this smoke actually guards. Co-Authored-By: RuFlo <ruflo-bot@users.noreply.github.com> --------- Co-authored-by: RuFlo <ruflo-bot@users.noreply.github.com>
126 lines
7.0 KiB
Markdown
126 lines
7.0 KiB
Markdown
# Ruflo — Overview · Usage · Status
|
|
|
|
> The complementary doc to [`USERGUIDE.md`](USERGUIDE.md) (deep reference) and [`/verification.md`](../verification.md) (cryptographic witness). This doc tells you **what Ruflo is**, **how to use it day-to-day**, and **what currently works** — without the encyclopedic reference depth.
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
Ruflo is a multi-agent AI orchestration layer for Claude Code. It turns Claude Code from a single-context coding assistant into a coordinated swarm of agents that share memory, learn from outcomes, talk across machines, and remain auditable.
|
|
|
|
The runtime is the `ruflo` npm package. End-user surface is:
|
|
|
|
- **MCP server** — exposes 323 tools to Claude Code (memory, agents, swarm coordination, hooks, GitHub integration, browser automation, etc.).
|
|
- **CLI** — 45 top-level commands (`ruflo agent`, `ruflo swarm`, `ruflo memory`, `ruflo hooks`, `ruflo verify`, …) for terminal/script use.
|
|
- **Claude Code plugins** — 32 installable plugins (`ruflo-core`, `ruflo-federation`, `ruflo-cost-tracker`, …) that bundle agent + skill + slash-command definitions.
|
|
- **WASM kernels** — Rust-compiled WASM for the policy engine, embeddings, and proof system; plugged into the same MCP/CLI surface.
|
|
|
|
For the "why" — coordinated swarms, self-learning memory, federated comms, enterprise security — see [`README.md`](../README.md).
|
|
|
|
## Usage at a glance
|
|
|
|
The intended day-to-day flow:
|
|
|
|
1. **Install once**:
|
|
```bash
|
|
npx ruflo init --wizard
|
|
```
|
|
This writes a `CLAUDE.md` with hooks and routing rules, registers the MCP server with Claude Code, and seeds `.claude-flow/` with config + memory.
|
|
|
|
2. **Just use Claude Code normally**. Hooks automatically route tasks, retrieve relevant memory patterns, and coordinate background agents. You don't have to learn the 323 MCP tools — the routing layer does.
|
|
|
|
3. **Run the CLI for orchestration tasks** that don't fit naturally into Claude Code:
|
|
- `ruflo agent spawn -t coder --name api-worker` — long-running agent
|
|
- `ruflo swarm init --topology hierarchical --max-agents 8` — coordinated team
|
|
- `ruflo memory search --query "auth patterns"` — semantic search across stored knowledge
|
|
- `ruflo doctor --fix` — diagnose & repair install
|
|
- `ruflo verify` — confirm your installed bytes match the signed witness
|
|
|
|
4. **Install plugins as you need them**:
|
|
```bash
|
|
/plugin marketplace add ruvnet/ruflo
|
|
/plugin install ruflo-federation@ruflo
|
|
```
|
|
|
|
Full command reference: [`USERGUIDE.md`](USERGUIDE.md).
|
|
|
|
## Status — what currently works
|
|
|
|
**Snapshot at `ruflo@3.10.2` / `@claude-flow/cli@3.10.1`**, branch `main` @ commit `cdd5308d8`. Capability counts updated 2026-05-25 via quality-sweep audit (see `docs/QUALITY-SWEEP.md`).
|
|
|
|
### Test baseline
|
|
|
|
| Suite | Count | Status |
|
|
|---|---|---|
|
|
| `@claude-flow/cli` vitest | 1999 / 1999 | green, 0 failures, 46 intentionally skipped |
|
|
| `@claude-flow/plugin-agent-federation` vitest | 366 / 366 | green |
|
|
| **Combined audit-fix surface** | all encryption + federation + graph tests | green |
|
|
|
|
### Capability inventory (auto-generated via [`scripts/inventory-capabilities.mjs`](../scripts/inventory-capabilities.mjs))
|
|
|
|
| Surface | Count | Verified by |
|
|
|---|---|---|
|
|
| MCP tools | **323** | `verification/inventory.json` + quality-sweep audit 2026-05-25 |
|
|
| CLI commands (top-level) | **45** | quality-sweep audit 2026-05-25 (commands/index.ts) |
|
|
| Plugins (`plugins/ruflo-*`) | **33** | quality-sweep audit 2026-05-25 (33 dirs with .claude-plugin/plugin.json) |
|
|
| Agent definitions | **45** | quality-sweep audit 2026-05-25 (plugins/*/agents/*.md count) |
|
|
|
|
### Recently shipped (since `ruflo@3.6.24` published)
|
|
|
|
**Audit hardening — `audit_1776853149979`**:
|
|
- Command injection closed in `github-safe.js`, `statusline.js/cjs` (git calls), `github-tools` MCP (gh pr/issue/run), `update/executor` (npm install).
|
|
- Loader-hijack env vars (`LD_PRELOAD`, `NODE_OPTIONS`, `DYLD_*`) denied at the `terminal_create` boundary via `validateEnv()`.
|
|
- File mode 0600 enforced on session, terminal, memory stores via `fs-secure.writeFileRestricted`.
|
|
- MCP stdin DoS cap (10MB) on `bin/mcp-server.js` + `bin/cli.js` to prevent un-newlined-input OOM.
|
|
- Fetch timeouts on `verify` + IPFS HEAD probe.
|
|
|
|
**Encryption at rest — [ADR-096](../v3/docs/adr/ADR-096-encryption-at-rest.md), all 4 phases shipped**:
|
|
- AES-256-GCM vault module with magic-byte format (`RFE1`) for backward-compat migration.
|
|
- Opt-in via `CLAUDE_FLOW_ENCRYPT_AT_REST=1`; off-by-default preserves the 1865-test baseline.
|
|
- High-tier stores wired: `sessions/`, `terminals/`, `.swarm/memory.db` (sql.js SQLite + ONNX embeddings).
|
|
- 76 dedicated tests across vault primitives, integration, tamper detection, migration paths.
|
|
|
|
**Federation budget circuit breaker — [ADR-097](../v3/docs/adr/ADR-097-federation-budget-circuit-breaker.md), Phase 1 shipped**:
|
|
- `federation_send` accepts optional `budget`/`maxHops`/`hopCount`/`spent` metadata.
|
|
- Default `maxHops: 8` defangs recursive delegation loops even for callers that don't opt in.
|
|
- Constant-string error reasons (`HOP_LIMIT_EXCEEDED`, `BUDGET_EXCEEDED`, `INVALID_BUDGET`) — no oracle leak.
|
|
- Closes #1723 (and dup #1724).
|
|
|
|
### What's next
|
|
|
|
Tracked in the project task list (see GitHub Project / `TaskList`):
|
|
|
|
| Track | Status |
|
|
|---|---|
|
|
| ADR-096 Phase 5 — `ruflo doctor` encryption status | pending |
|
|
| ADR-096 Phase 5+ — keychain (`keytar`) + passphrase resolvers | deferred |
|
|
| ADR-097 Phase 2 — peer state machine (ACTIVE / SUSPENDED / EVICTED) | deferred |
|
|
| ADR-097 Phase 3 — `ruflo-cost-tracker` integration | deferred |
|
|
| ADR-097 Phase 4 — `ruflo doctor` peer state + `federation_breaker_status` MCP tool | deferred |
|
|
| `verification.md` per-MCP-tool witness signing | pending (task #25) |
|
|
| `verification.md` functional smoke tests for `ruflo verify --functional` | pending (task #26) |
|
|
| Batch publish `3.6.25` + witness manifest regen | pending |
|
|
|
|
### Verification
|
|
|
|
Every fix in `verification.md` is signed with Ed25519 keyed off the git commit. To verify your installed bytes match what was witnessed:
|
|
|
|
```bash
|
|
ruflo verify
|
|
```
|
|
|
|
The command fetches the manifest, recomputes SHA-256 for every cited file, re-derives the public key from the git commit, and verifies the signature. Drift in any fix produces a non-zero exit + a structured error pointing at the regressed file.
|
|
|
|
Per-capability witness signing for the full 300-tool / 49-command surface is in flight — see tasks #25 / #26.
|
|
|
|
## Where to go next
|
|
|
|
| If you want to… | Read this |
|
|
|---|---|
|
|
| Pitch / why-ruflo | [`README.md`](../README.md) |
|
|
| Day-to-day commands + config | This doc, plus [`USERGUIDE.md`](USERGUIDE.md) for depth |
|
|
| Architecture decisions | [`v3/docs/adr/`](../v3/docs/adr/) — ADR-093, ADR-095, ADR-096, ADR-097 are the recent ones |
|
|
| Cryptographic proof of build correctness | [`verification.md`](../verification.md) + [`ruflo verify`](#verification) |
|
|
| Plugin development | [`USERGUIDE.md` → Plugin section](USERGUIDE.md#-ecosystem--integrations) |
|
|
| Open issues + roadmap | [GitHub Issues](https://github.com/ruvnet/claude-flow/issues) |
|