Ruflo v3.38.9 review: the symlink fix and what to check before production


In brief: Ruflo (ruvnet/ruflo, formerly Claude Flow) is an MIT-licensed TypeScript agent meta-harness that wraps Claude Code and Codex with swarms of specialized agents, persistent memory, MCP tooling, and coordination hooks. As of the 18 August 2026 snapshot, it is worth evaluating if you already build with Claude Code or Codex and want more structure around multi-agent work. It is not yet a plug-and-play production platform: the project releases quickly and changes behavior often, some status reporting was misleading until recently, and the README’s performance, scale, and compliance claims are maintainer claims that this source and documentation review did not run or verify.

Facts at a glance

Item Value
Review date 18 August 2026
Project ruvnet/ruflo (formerly Claude Flow)
License MIT
Language TypeScript
Stars 68,120 (snapshot at review)
Forks 8,168 (snapshot at review)
Open issues 837 (snapshot at review)
Latest release v3.38.9, published 13 August 2026
Verification level Observed: source and documentation review

What Ruflo is and who should consider it

The maintainers describe Ruflo as “an agent meta-harness for Claude Code and Codex”: the execution layer around those CLIs that adds specialized agents, swarm coordination, persistent memory, learning loops, MCP tooling, federation, and security guardrails. The README claims 100+ specialized agents, a plugin marketplace, multi-provider support (Claude, GPT, Gemini, Cohere, Ollama), background workers, vector memory, and a self-hostable web UI beta with a hosted demo. The project was formerly named Claude Flow, and some packages and commands still use the claude-flow name.

These are the conditions under which I would put Ruflo on a shortlist:

  • Your team already works inside Claude Code or Codex and wants coordinated multi-agent runs, shared memory across sessions, and MCP integration rather than a separate agent platform.
  • You are comfortable with a fast-moving TypeScript codebase, frequent releases, and a large plugin surface, and you can pin versions and do your own regression checks.
  • You can start with a scoped experiment, one or two agents plus memory, before committing to swarms or federation.

Skip it for now if you need a stable, documented platform with a support contract, or if your team cannot absorb the churn of a project that shipped five patch releases in two days (v3.38.5 through v3.38.9, 12 to 13 August 2026).

What changed in v3.38.9

v3.38.9, published 13 August 2026, is a narrow fix to PathValidator. According to the release notes, validate() canonicalized candidate paths with fs.realpath while the constructor only resolved allowed prefixes with path.resolve(). On macOS, where os.tmpdir() is reached through a symlink (/var → /private/var), a realpath’d candidate could never match a non-realpath’d prefix, so every path under a symlinked prefix, including the prefix’s own contents, was rejected as “outside allowed directories.”

The failure hit ruflo proxy install on macOS after download and Ed25519 signature verification had already succeeded; the release notes describe the path check as defense-in-depth rather than the integrity boundary. The fix realpaths prefixes at construction time, using the same ENOENT-tolerant fallback validate() already used for candidates.

What this means for operators:

  • If you ran ruflo proxy install on macOS against v3.38.8 or earlier and saw “outside allowed directories,” upgrade to v3.38.9 and retry.
  • If you pin an older version, expect this failure on any symlinked prefix, not only macOS temp paths.
  • The release changes path validation only; it does not change agent behavior, memory, or provider routing.

What the recent release cadence signals

The releases immediately before v3.38.9 matter more for judging maintenance health than the patch itself. v3.38.8 fixed provider/model configuration propagation: an explicit provider or model choice (for example, a local Ollama or OpenRouter endpoint) was previously persisted but ignored during execution, so CLI commands could appear to succeed while execution failed closed or silently used a different provider or model than requested. If you configure a non-default provider, verify on v3.38.8+ that the agent actually used what you specified.

v3.38.7 was a status-honesty fix: memory status functions returned available: true and reported a hardcoded “sql.js + HNSW” backend even when the request path used brute-force cosine search rather than an HNSW index. The renamed functions now report the actual algorithm. The release notes leave open the larger task of wiring real HNSW into the default search path, so treat any “HNSW” claim in the README as conditional until you observe the algorithm field at runtime.

Other recent fixes (v3.38.5 and v3.38.6) covered ADR indexing skipping .brain, github_issue_track honoring owner/repo arguments, secret-detection regexes for common Stripe/OpenAI key shapes, a Codex stdin hang, stale intelligence cache content, and daemon config overrides lost to a stale daemon-state.json.

Maintenance is active and fixes land quickly, and the project has recently been correcting misleading status reporting. The cautions are the release churn (five patches in roughly two days), 837 open issues at the snapshot, and at least one long-open onboarding issue (#958, opened January 2026 and still open at the snapshot) reporting difficulty getting v3 to perform work as documented. An older owner-authored review of v2 (#108) documented local build problems; v3 is a rewrite, but the pattern argues for verifying the exact commands against your setup.

Deployment and upgrade concerns

Before production, verify these specifics:

  • Install path. The README documents two paths with different surface areas: the Claude Code plugin install (slash commands, a few skills, zero workspace files) versus CLI install via npx ruflo init (the full loop: 98 agents, 60+ commands, 30 skills, MCP server, hooks, daemon, plus workspace files). The README says production use should take the CLI path; plugin MCP tool names also differ (for example, mcp__plugin_ruflo-core_ruflo__memory_store rather than bare names). Diagnose against the path you actually installed.
  • macOS paths. Upgrade to v3.38.9 before running proxy install on macOS, or pin an older version and expect the PathValidator rejection.
  • Runtime status versus actual behavior. After v3.38.7, check the algorithm field in memory status responses to see whether HNSW or brute-force cosine actually ran; earlier versions could report HNSW regardless.
  • Provider and model routing. With v3.38.8+, confirm explicit provider/model configuration is honored; earlier versions could silently use a different provider or model.
  • Daemon state. v3.38.6 fixed resourceThresholds overrides being lost to stale daemon-state.json; after configuring, confirm overrides survive a restart.
  • Web UI. The README says the web UI beta is self-hostable via Docker (multi-stage Dockerfile with embedded Mongo and a cloudbuild.yaml for Cloud Run), with a hosted demo at flo.ruv.io. Treat it as beta.
  • Federation and compliance. The README describes zero-trust federation with mTLS and ed25519, PII stripping, behavioral trust scoring, and compliance modes (HIPAA, SOC2, GDPR audit trails). This review has no runtime evidence for those features; if they matter to you, test and audit them yourself before production.

Limitations and open questions

The most important limitation is attribution. The README’s headline numbers come from maintainer-published benchmark documents, audit docs, and repository data files: performance comparisons against LangGraph, AutoGen, and CrewAI (for example, cold start, single turn, and RSS wins of 1.3× to 1953×), vector search speedups (~1.9× to 4.7× above a crossover with recall@10 around 0.99), 89% routing accuracy, and download counts. None of them were independently verified for this review.

Open issues show that some ambitious claims are not shipped. A May 2026 research issue (#2156) acknowledges that HNSW+AgentDB has no public benchmark score, that no temporal abstraction layer exists, and that there is no agent capability benchmark harness or skill lifecycle yet; it proposes a simulative planning router as ADR-131 with proposed status. The unlimited-agent-swarm epic (#125) remains open with many unchecked items, and the phased embeddings upgrade (ADR-121, tracked in issue #2036) had open phases at the snapshot. The project also appears largely owner-led with agent-assisted development, so weigh bus factor and support continuity when planning long-term adoption.

Alternatives and evaluation questions

The maintainers’ benchmark document positions Ruflo against LangGraph, AutoGen, and CrewAI, but that document is maintainer-published, and this review did not run comparisons. Rather than endorsing an alternative, the decision should turn on these questions:

  • What are you buying? A harness inside Claude Code/Codex with memory, hooks, MCP tools, and multi-agent runs is Ruflo’s core value. If you need a framework independent of those CLIs, verify whether the CLI-coupled surface fits your stack.
  • Do you need swarm or federation features now? They carry the most risk and the least independent verification; a minimal single-agent-plus-memory setup tests the core value.
  • Can you absorb release churn? Pin exact versions, follow releases, and budget for regression testing. Five patches in two days is normal for this project.
  • What is your support path? GitHub issues, a Discord community, and an enterprise contact are listed; with 837 open issues, plan for self-service troubleshooting.
  • Can you reproduce the claims you depend on? Budget time for your own smoke tests of install path, provider routing, memory search, and cost tracking before committing.

Verdict

Conditional recommendation. Consider Ruflo if you already work inside Claude Code or Codex, want structured multi-agent coordination and persistent memory, and can tolerate a fast-moving codebase with a large plugin surface. Before production, pin a version, verify provider/model routing and memory algorithm reporting, test on your actual OS (macOS path validation specifically), and run your own security and compliance review if federation is involved.

Defer if you need a stable, supported platform, a smaller reviewable footprint, or evidence that the scale and compliance claims hold in your environment.

Sources

If you are evaluating Ruflo or planning an agent workflow, I can help with the parts that tend to get skipped: pinning versions, confirming which install path you are on, writing smoke tests for provider routing and memory behavior, and drafting an upgrade plan that matches your tolerance for churn. I’m Xiang Peng at XP812, and I work with founders and engineering teams on AI system integration, deployment, and maintenance.

Request help