Project releases
Ruflo 3.57.0 tightens the local MCP bridge, anchors the policy ledger and adds JSON doctor output
Ruflo 3.57.0 (October 17) makes the loopback MCP bridge check Host and Origin, verifies a pruned policy ledger against its on-disk archive anchor, adds versioned JSON output to doctor and fixes a batch of swarm, memory and mission-scoping bugs. It also folds in 3.56.10 from October 14.
GitHub activity: · Published:
Who may call the local bridge
Loopback Host and an allowed Origin, or a token.
Explanatory diagram · not live telemetryLocal client
Loopback Host and Origin
Bridge check
Host, then Origin
MCP tools
Call accepted
Web page
Foreign Origin refused
Policy ledger
Checked against anchor
What Ruflo is
Ruflo is an agent harness for Claude Code, Codex and other hosts. It coordinates swarms of agents, keeps project memory and exposes its tools through an MCP server. Each release publishes three npm packages together: @claude-flow/cli, claude-flow and ruflo.
What changed
Version 3.57.0 was released on October 17 at 22:38:55Z. The GitHub tag resolves to commit e4fb889. The release notes describe three boundary changes.
- Local MCP bridge (PRs #4226 and #4243). When no MCP_AUTH_TOKEN is set, the loopback bridge now requires a loopback Host header, which blocks DNS rebinding. A request that carries an Origin header must come from a loopback origin or one listed explicitly in MCP_CORS_ORIGIN; native clients that send no Origin (CLI, IDEs, curl) are unaffected. In unauthenticated local-only mode, requests from arbitrary non-loopback, non-allowlisted browser origins are rejected; loopback or explicitly allowlisted origins remain eligible. Token mode is unchanged.
- Policy ledger (PRs #3892 and #4216). A ledger that has already been pruned is now checked against its separate on-disk archive anchor, instead of trusting the editable state.json on its own. According to the notes, this fixes policy-ledger-verification-failed errors on installs with a pruned ledger.
- Doctor. ruflo doctor --json prints its checks as versioned JSON (PR #4228). In the packed code, the output object starts with schemaVersion 1. A new native-addon check warns when better-sqlite3 was built against Node 24.19+ headers while you run Node 24.19 to 24.21, a combination that can abort the process (PR #4055).
The release also fixes a batch of swarm bugs. Delivery to subscribers is cancelled cleanly at shutdown, and acknowledgements are tracked per recipient. Urgent messages survive a full queue, and failed or cancelled workers give back their slot. Coordinator cancellation stays final, domain pools release agents after tasks finish, and shared worker reservations are honored across pools.
Other fixes: learning-stats updates no longer lose increments when several processes write at once. Mission Control keeps each project's active mission separate. daemon status reports the real TTL, and --no-color and --no-update are honored earlier. The @metaharness/darwin pin moves to ~0.12.0.
Version 3.56.10 (October 14) is folded into this story because 3.57.0 builds on it. It added picture, look and motion options to ruflo tui (--look bbs|orbital|plain, --fps, --anim, --pictures, --boot, --view). The MCP server now starts in the session project and ignores a CLAUDE_FLOW_CWD that points at the home directory or a filesystem root. Duplicate daemons per workspace are stopped. The v3 implementation skills became opt-in through init --full.
The 3.57.0 notes also change the default Codex settings that init writes. That change is not repeated here as new; see the earlier Ruflo stories. The notes also say PR #4220 is held for a later release because it needs a signed helper manifest.
What the published packages contain
- npm lists @claude-flow/cli 3.57.0 at 22:37:59Z and ruflo 3.57.0 at 22:36:40Z on October 17. Both are tagged latest. Version 3.56.10 of each was published around 16:27Z to 16:29Z on October 14.
- The CLI 3.57.0 tarball we downloaded matches the registry's SHA-512 integrity value and holds 1,743 entries.
- Its doctor command declares a json option, described as "Emit versioned JSON health checks (cannot be combined with repair flags)", and a component option. The component option routes native-addon to the new check.
- The packaged MCP server refuses to start an HTTP server on a non-loopback host unless requests are authenticated.
Get started
Prerequisites: Node 20 or later and a disposable project folder. The first command only asks the registry for the version and should print 3.57.0. The second runs the documented health check with JSON output. It should print one JSON object whose schemaVersion is 1 and whose checks list holds a name, status and message for each check.
Documentation and artifact verified only. We read the release notes and packed code but did not install the package or run these commands.
npm view ruflo@3.57.0 version
npx ruflo@3.57.0 doctor --json
npx ruflo@3.57.0 doctor --component native-addon
MCP: no new configuration is needed. If you call the local bridge from your own tool without MCP_AUTH_TOKEN, use a loopback Host; native clients that send no Origin header keep working. A browser page from a non-loopback origin is refused unless that origin is listed explicitly in MCP_CORS_ORIGIN, the existing CORS setting PR #4243 reuses as the allowlist. We did not test this setting. Skills: the v3 implementation skills come with init --full since 3.56.10; no new npx skills command is documented.
Use it today
Input: a CI job or a fleet of developer machines running Ruflo. Workflow: run ruflo doctor --json and parse the checks list instead of scraping colored text. Check that schemaVersion is 1 and reject output you don't recognize, then review every check that isn't pass. The packed type declares each status as pass, warn or fail, so failing the job on fail and reviewing warn is one option. Output: a machine-readable health record per machine. On Node 24.19 to 24.21, look for the native-addon check before a better-sqlite3 crash turns up in a session.
Acceptance: the job reads schemaVersion before relying on field names and stops if the version is not one it knows.
Experimental commentary — acceptance test
One idea is to collect doctor JSON from many machines into a small dashboard that shows configuration drift over time. Limitation: the JSON lists check results only. It is not a full inventory, and its fields may change when schemaVersion changes. Falsifiable test: start with a fixture check, feeding the dashboard two saved doctor JSON files, one with a warn on the native-addon check and one with pass, and confirm it flags only the first. A live version needs the same deliberately mismatched better-sqlite3 build (compiled against Node 24.19+ headers) run under an applicable Node 24.19 to 24.21 runtime and under a runtime outside that range; the exact mismatch condition must be confirmed against PR #4055 first, and we have not run it, so we give no expected output for it. If the dashboard can't separate the fixtures, the idea fails.
Limits and verification
- Behavior is taken from the release notes and packed package code. Nothing was run.
- The Host/Origin check narrows who can reach a loopback bridge. It is not a general safety guarantee, and remote use still needs a token.
- No performance or benchmark claim is made.
- Draft history: prepared for the unpublished October 19 candidate; intended for first publication with the October 27 candidate. Source event and verification dates are unchanged.
Read the original on Ruflo v3.57.0 release