ruvnet/ruflo

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Works · Linux / Luna: Not tested

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/ruvnet--ruflo.svg).

mcp-server

Works

README claims checked out on 1 recorded setup. Combinations not listed here were not tested.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
Linuxyesnot tested

Linux / Haiku 5.5: yes · Oct 23, 2026 · 88349655ebc2 · claude-code / 2.1.300 (Claude Code)
Recorded operation: npx -y ruflo@latest mcp start · local stdio MCP start + initialize + tools/list

Linux / Luna: not tested · Oct 23, 2026 · 88349655ebc2 · codex / codex-cli 0.163.0
Recorded operation: npx -y ruflo@latest init wizard

Does what it says
2 of 2 claims checked out
  • Ruflo works as an MCP server that clients can call tools on: Real input produced the expected result: coldpass-probe-key

    Source: Use NPX for Ruflo project setup and connect your client to the Ruflo MCP server.

    Input: {"tool": "memory_store", "arguments": {"key": "coldpass-probe-key", "value": "coldpass-value-7731", "namespace": "coldpass"}}

    Expected: store succeeds and returns the key

    Command: npx -y ruflo@latest mcp start tools/call {"tool": "memory_store", "arguments": {"key": "coldpass-probe-key", "value": "coldpass-value-7731", "namespace": "coldpass"}}

    Observed: coldpass-probe-key\",\n \"namespace\": \"coldpass\",\n \"stored\": true,\n \"storedAt\": \"2026-10-23T15:40:41.682Z\",\n \"hasEmbedding\": true,\n \"embeddingDimensions\": 384,\n \"provenanceType\": \"unknown\",\n \"backend\": \"sqlite (bridge, brute-force cosine)\",\n \"storeTime\": \"1062.92ms\"\n}"}], "isError": false}

  • Ruflo remembers values across sessions: Real input produced the expected result: coldpass-value-7731

    Source: remember across sessions

    Input: {"tool": "memory_retrieve", "arguments": {"key": "coldpass-probe-key", "namespace": "coldpass"}}

    Expected: the stored value is returned from a new server process

    Command: npx -y ruflo@latest mcp start tools/call {"tool": "memory_retrieve", "arguments": {"key": "coldpass-probe-key", "namespace": "coldpass"}}

    Observed: coldpass-value-7731\",\n \"tags\": [],\n \"storedAt\": 1792770041640,\n \"updatedAt\": 1792770041678,\n \"accessCount\": 1,\n \"hasEmbedding\": true,\n \"found\": true,\n \"backend\": \"sqlite (bridge, brute-force cosine)\"\n}"}], "isError": false}

MCP
Yes, observed
Local or hosted
local
Local: runs on your machine
Needs keys or browser
None seen
Maintained
Maintained
actively maintained: last commit 0 days ago; 2633 commits and 880 merged PRs in 90 days; 657 open issues, 313 open PRs; latest release 2026-10-22

Last commit Oct 23, 2026

Setup time
10 min 17 s
10 min 17 s to a working result
Issue
none found in recorded check
Examples
1 of 1 ran as expected
  • Quick non-interactive init sets up Ruflo in a project: command completed successfully

    Source: README.md CLI Install (npx ruflo@latest init); checked with init check

    Input: init check in a project created by init --minimal

    Expected: project reports initialized

    Command: npx -y ruflo@latest init check

    Observed: [OK] RuFlo is initialized [INFO] V3 Runtime: .claude-flow/config.yaml

Cycles
1 of 1 ran as expected
  • Background worker can be triggered manually to run one cycle: Triggered one cycle by hand (run-once via daemon trigger -w audit; normal trigger: daemon background workers (no timer fired; manual trigger)): Worker audit completed in 8ms Output { "timestamp": "2026-10-23T15:40:48.902Z", "mode": "local", "checks": { "envFilesProtected": true, "gitIgnoreExists": true, "noHardcodedSecrets": true }, "riskLevel": "low", "recommendations": [], "note": "Install Claude Code CLI for AI-powered security analysis" } Transformers.js loaded: Xenova/all-MiniLM-L6-v2

    Source: v3/@claude-flow/cli/src/commands/daemon.ts

    Input: -w audit

    Expected: audit worker runs once and prints its result

    Command: npx -y ruflo@latest daemon trigger -w audit

    Observed: Worker audit completed in 8ms Output { "timestamp": "2026-10-23T15:40:48.902Z", "mode": "local", "checks": { "envFilesProtected": true, "gitIgnoreExists": true, "noHardcodedSecrets": true }, "riskLevel": "low", "recommendations": [], "note": "Install Claude Code CLI for AI-powered security analysis" } Transformers.js loaded: Xenova/all-MiniLM-L6-v2

Evidence
README behavior checked
Agent interfaces
MCP, CLI (documented only)
MCP, CLI (documented only)

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

MCP context
367 tools · about 69,552 tokens
367 tools · about 69,552 tokens

Largest returned tools/list page in these observations. Compact UTF-8 definition bytes ÷ 4, rounded up; approximate, excluding client framing and tool results. This is context size, not proof that every tool works.

Measured on linux with Haiku 5.5 · Oct 23, 2026 on 88349655ebc2

Tested with
Claude Code / Haiku 5.5
  • Linux: Claude Code / Haiku 5.5 · agent 2.1.300 (Claude Code) · Checked operation passed · Oct 23, 2026 on 88349655ebc2

Each entry describes its recorded operation and source revision. Other agent clients were not tested.

Safety
No unexpected network or file activity found in these checks

No problems traced to this repository code in these checks; a short run cannot prove safety. 3328 listed items (named-host connections, static matches, dependency advisories) are below and do not change this verdict. 260 static matches retained as context.

Source contains download and execute; review its purpose. 4 distinct locations. 14 findings.

Gitleaks found a possible hardcoded secret; value withheld. 10 distinct locations. 10 findings.

OSV reports a known vulnerability in this dependency version. 85 distinct locations. 1003 findings.

Full event, path and process lists for each observed setup:

Run details

Haiku 5.5

Native agent · Checked operation passed

Checked operation npx -y ruflo@latest mcp start · local stdio MCP start + initialize + tools/list

Agent-reported scope: Start the Ruflo MCP server with npx and call its memory tools: store a value, then read it back from a new server process.

MCP server returned: ruflo · version 3.0.0.

MCP tools returned: agent_spawn, agent_execute, agent_terminate, agent_status, agent_list, agent_pool, agent_health, agent_update, agent_logs, swarm_init, swarm_pheromone_update, swarm_pheromone_status, swarm_status, swarm_shutdown, swarm_health, memory_store, memory_retrieve, memory_search, memory_delete, memory_list, memory_stats, memory_migrate, memory_import_claude, memory_bridge_status, memory_search_unified, memory_detailed-stats, memory_cleanup, memory_compress, memory_export, memory_import, config_get, config_set, config_list, config_reset, config_export, config_import, hooks_intelligence_unified-stats, hooks_teammate-idle, hooks_task-completed, hooks_pre-edit, hooks_post-edit, hooks_pre-command, hooks_post-command, hooks_route, hooks_metrics, hooks_list, hooks_pre-task, hooks_post-task, hooks_explain, hooks_pretrain, hooks_build-agents, hooks_transfer, hooks_session-start, hooks_session-end, hooks_session-restore, hooks_notify, hooks_init, hooks_intelligence, hooks_intelligence-reset, hooks_intelligence_trajectory-start, hooks_intelligence_trajectory-step, hooks_intelligence_trajectory-end, hooks_intelligence_pattern-store, hooks_intelligence_pattern-search, hooks_intelligence_stats, hooks_intelligence_learn, hooks_intelligence_attention, hooks_worker-list, hooks_worker-dispatch, hooks_worker-status, hooks_worker-detect, hooks_worker-cancel, hooks_model-route, hooks_model-outcome, hooks_model-stats, hooks_model-verify, hooks_codemod, task_create, task_status, task_list, task_complete, task_update, task_assign, task_cancel, task_retry, session_save, session_restore, session_list, session_delete, session_info, session_current, session_export, session_import, hive-mind_spawn, hive-mind_init, hive-mind_status, hive-mind_join, hive-mind_leave, hive-mind_consensus, hive-mind_broadcast, hive-mind_shutdown, hive-mind_memory, hive-mind_optimize-memory, workflow_run, workflow_create, workflow_execute, workflow_status, workflow_list, workflow_pause, workflow_resume, workflow_cancel, workflow_delete, workflow_template, workflow_stop, workflow_validate, analyze_diff, analyze_diff-risk, analyze_diff-classify, analyze_diff-reviewers, analyze_file-risk, analyze_diff-stats, progress_check, progress_sync, progress_summary, progress_watch, embeddings_init, embeddings_generate, embeddings_compare, embeddings_search, embeddings_neural, embeddings_hyperbolic, embeddings_status, embeddings_rabitq_build, embeddings_rabitq_search, embeddings_rabitq_status, claims_claim, claims_release, claims_handoff, claims_accept-handoff, claims_status, claims_list, claims_mark-stealable, claims_steal, claims_stealable, claims_load, claims_board, claims_rebalance, policy_evaluate, policy_status, aidefence_scan, aidefence_analyze, aidefence_stats, aidefence_learn, aidefence_is_safe, aidefence_has_pii, transfer_detect-pii, transfer_ipfs-resolve, transfer_store-search, transfer_store-info, transfer_store-download, transfer_store-featured, transfer_store-trending, transfer_plugin-search, transfer_plugin-info, transfer_plugin-featured, transfer_plugin-official, system_status, system_metrics, system_health, system_info, system_reset, mcp_status, task_summary, mcp_start, mcp_stop, terminal_create, terminal_execute, terminal_list, terminal_close, terminal_history, neural_train, neural_predict, neural_patterns, neural_compress, neural_status, neural_optimize, performance_report, performance_bottleneck, performance_benchmark, performance_profile, performance_optimize, performance_metrics, github_repo_analyze, github_pr_manage, github_issue_track, github_workflow, github_metrics, daa_agent_create, daa_agent_adapt, daa_workflow_create, daa_workflow_execute, daa_knowledge_share, daa_learning_status, daa_cognitive_pattern, daa_performance_metrics, coordination_topology, coordination_load_balance, coordination_sync, coordination_node, coordination_consensus, coordination_orchestrate, coordination_metrics, browser_session_record, browser_session_end, browser_session_replay, browser_template_apply, browser_cookie_use, browser_act, agentdb_health, agentdb_controllers, agentdb_pattern-store, agentdb_pattern-search, agentdb_feedback, agentdb_causal-edge, agentdb_causal-edge-delete, agentdb_causal-node-delete, agentdb_route, agentdb_session-start, agentdb_session-end, agentdb_hierarchical-store, agentdb_hierarchical-recall, agentdb_hierarchical-delete, agentdb_consolidate, agentdb_batch, agentdb_context-synthesize, agentdb_semantic-route, agentdb_graph-query, agentdb_graph-pathfinder, ruvllm_status, ruvllm_hnsw_create, ruvllm_hnsw_add, ruvllm_hnsw_route, ruvllm_sona_create, ruvllm_sona_adapt, ruvllm_microlora_create, ruvllm_microlora_adapt, ruvllm_chat_format, ruvllm_generate_config, wasm_agent_create, wasm_agent_prompt, wasm_agent_tool, wasm_agent_list, wasm_agent_terminate, wasm_agent_files, wasm_agent_export, wasm_gallery_list, wasm_gallery_search, wasm_gallery_create, wasm_agent_compose, wasm_agent_state, wasm_agent_todos, wasm_agent_tools, wasm_agent_turn_count, wasm_agent_is_stopped, wasm_agent_reset, wasm_gallery_load_rvf, wasm_gallery_configure, wasm_gallery_categories, wasm_gallery_list_by_category, wasm_gallery_add_custom, wasm_gallery_remove_custom, wasm_gallery_import, wasm_gallery_export, wasm_gallery_active, wasm_gallery_config, managed_agent_create, managed_agent_prompt, managed_agent_status, managed_agent_events, managed_agent_list, managed_agent_terminate, guidance_brain, guidance_capabilities, guidance_recommend, guidance_discover, guidance_workflow, guidance_quickref, autopilot_status, autopilot_enable, autopilot_disable, autopilot_config, autopilot_reset, autopilot_log, autopilot_progress, autopilot_learn, autopilot_history, autopilot_predict, hooks_coverage-route, hooks_coverage-suggest, hooks_coverage-gaps, metaharness_score, metaharness_genome, metaharness_mcp_scan, metaharness_threat_model, metaharness_oia_audit, metaharness_audit_list, metaharness_similarity, metaharness_drift_from_history, metaharness_audit_trend, metaharness_evolve, metaharness_security_bench, metaharness_bench, metaharness_redblue, metaharness_learn, metaharness_gepa, metaharness_flywheel, agenticow_branch, agenticow_ingest, agenticow_query, agenticow_diff, agenticow_lineage, agenticow_status, agenticow_checkpoint, agenticow_rollback, agenticow_promote, agenticow_speculate, federation_bbs_register, federation_bbs_publish, federation_bbs_watch, federation_bbs_human_join, federation_bbs_identity, federation_bbs_peer_add, federation_bbs_peers, federation_bbs_serve, federation_bbs_sync, x_federation_sync, x_federation_roster, x_federation_claims, x_federation_registry, x_federation_publish, x_federation_invite_mint, x_federation_admit, seraphina_guidance, x_federation_join, x_federation_channel_create, x_federation_channel_grant, x_federation_channel_accept, x_federation_channel_publish, x_federation_channel_read, x_federation_channel_list, business_pod_validate, business_pod_route_backend, http_fetch, mission_create, mission_plan, mission_get, mission_events, mission_request_action, team_create, team_spawn, team_send, team_inbox, team_broadcast, team_plan, team_status, team_on_stop, team_shutdown. Tool listing does not establish authenticated tool-call success.

Run details
run
ruvnet--ruflo-claude-haiku-5-5-1792769377503064541
date
Oct 23, 2026
time to working
617.0s
product hosting / execution
Local stdio MCP server in the guest
recorded operation scope
product operation
model
claude-haiku-5-5
agent / version
claude-code / 2.1.300 (Claude Code)
platform
linux
reported cost
$0.020496
Recorded source
https://github.com/ruvnet/ruflo
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "88349655ebc2de8f9bf702aaf31d6be768e1ea11", "url": "https://github.com/ruvnet/ruflo"}
Test version
readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9
revision
88349655ebc2de8f9bf702aaf31d6be768e1ea11
Whose fault: not assigned · resolved

Safety: Review signals: 14 download and execute, 10 hardcoded secret, 1640 known vulnerability. 130 static matches retained as context.

Review signals: 14 download and execute, 10 hardcoded secret, 1640 known vulnerability. 130 static matches retained as context.

Source contains download and execute; review its purpose. 4 distinct locations. 14 findings.

Gitleaks found a possible hardcoded secret; value withheld. 10 distinct locations. 10 findings.

OSV reports a known vulnerability in this dependency version. 85 distinct locations. 1003 findings.

29 download and execute matches retained as context; full list in the evidence.

3 encoded execution matches retained as context; full list in the evidence.

95 hardcoded secret matches retained as context; full list in the evidence.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • Ruflo works as an MCP server that clients can call tools on: Real input produced the expected result: coldpass-probe-key

    Source: Use NPX for Ruflo project setup and connect your client to the Ruflo MCP server.

    Input: {"tool": "memory_store", "arguments": {"key": "coldpass-probe-key", "value": "coldpass-value-7731", "namespace": "coldpass"}}

    Expected: store succeeds and returns the key

    Command: npx -y ruflo@latest mcp start tools/call {"tool": "memory_store", "arguments": {"key": "coldpass-probe-key", "value": "coldpass-value-7731", "namespace": "coldpass"}}

    Observed: coldpass-probe-key\",\n \"namespace\": \"coldpass\",\n \"stored\": true,\n \"storedAt\": \"2026-10-23T15:40:41.682Z\",\n \"hasEmbedding\": true,\n \"embeddingDimensions\": 384,\n \"provenanceType\": \"unknown\",\n \"backend\": \"sqlite (bridge, brute-force cosine)\",\n \"storeTime\": \"1062.92ms\"\n}"}], "isError": false}

  • Ruflo remembers values across sessions: Real input produced the expected result: coldpass-value-7731

    Source: remember across sessions

    Input: {"tool": "memory_retrieve", "arguments": {"key": "coldpass-probe-key", "namespace": "coldpass"}}

    Expected: the stored value is returned from a new server process

    Command: npx -y ruflo@latest mcp start tools/call {"tool": "memory_retrieve", "arguments": {"key": "coldpass-probe-key", "namespace": "coldpass"}}

    Observed: coldpass-value-7731\",\n \"tags\": [],\n \"storedAt\": 1792770041640,\n \"updatedAt\": 1792770041678,\n \"accessCount\": 1,\n \"hasEmbedding\": true,\n \"found\": true,\n \"backend\": \"sqlite (bridge, brute-force cosine)\"\n}"}], "isError": false}

Examples

  • Quick non-interactive init sets up Ruflo in a project: command completed successfully

    Source: README.md CLI Install (npx ruflo@latest init); checked with init check

    Input: init check in a project created by init --minimal

    Expected: project reports initialized

    Command: npx -y ruflo@latest init check

    Observed: [OK] RuFlo is initialized [INFO] V3 Runtime: .claude-flow/config.yaml

Cycles

  • Background worker can be triggered manually to run one cycle: Triggered one cycle by hand (run-once via daemon trigger -w audit; normal trigger: daemon background workers (no timer fired; manual trigger)): Worker audit completed in 8ms Output { "timestamp": "2026-10-23T15:40:48.902Z", "mode": "local", "checks": { "envFilesProtected": true, "gitIgnoreExists": true, "noHardcodedSecrets": true }, "riskLevel": "low", "recommendations": [], "note": "Install Claude Code CLI for AI-powered security analysis" } Transformers.js loaded: Xenova/all-MiniLM-L6-v2

    Source: v3/@claude-flow/cli/src/commands/daemon.ts

    Input: -w audit

    Expected: audit worker runs once and prints its result

    Command: npx -y ruflo@latest daemon trigger -w audit

    Observed: Worker audit completed in 8ms Output { "timestamp": "2026-10-23T15:40:48.902Z", "mode": "local", "checks": { "envFilesProtected": true, "gitIgnoreExists": true, "noHardcodedSecrets": true }, "riskLevel": "low", "recommendations": [], "note": "Install Claude Code CLI for AI-powered security analysis" } Transformers.js loaded: Xenova/all-MiniLM-L6-v2

Local or hosted: local

What the agent did

Start the Ruflo MCP server with npx and call its memory tools: store a value, then read it back from a new server process.

cd <guest-path> && pwd && ls -la && id -u && python3 --version && git --version 2>/dev/null; ls /inputs 2>/dev/null; head -c 400 README.md 2>/dev/null
cat /etc/os-release | head -3; which node npm uv pip3 2>&1; node --version 2>&1; ls <guest-path>
cd <guest-path> && grep -n -i -E "install|npx|node|requires|version" README.md | head -80
cd <guest-path> && sed -n 286,330p README.md; grep -n -i -E "prerequisite|node\.?js|node 20|node 18|>= ?[0-9]+" README.md | head -20; grep -A3 '"engines"' package.json; ls v3/@claude-flow/cli 2>/dev/null | head; cat .coldpass/* 2>/dev/null | head -5
sudo -n true && echo SUDO_OK; apt-cache policy nodejs 2>/dev/null | head -3; curl -sI https://deb.nodesource.com/ 2>&1 | head -1; env | grep -i proxy
cd /tmp && (curl -fsSL https://deb.nodesource.com/setup_22.x -o /tmp/ns_setup.sh && sudo -E bash /tmp/ns_setup.sh && sudo apt-get install -y nodejs) > /tmp/node_install.log 2>&1; echo rc=$?; tail -5 /tmp/node_install.log; node --version; npm --version
mkdir -p /tmp/ruflo-run && cd /tmp/ruflo-run && export NODE_USE_ENV_PROXY=1 && timeout 600 npx -y ruflo@latest --version > /tmp/ruflo_version.log 2>&1; echo rc=$?; tail -20 /tmp/ruflo_version.log
cd /tmp/ruflo-run && export NODE_USE_ENV_PROXY=1 && { printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'; sleep 20; } | timeout 90 npx -y ruflo@latest mcp start > /tmp/mcp_list.out 2>/tmp/mcp_list.err; echo rc=$?; python3 -c "
import json,sys
for l in open('/tmp/mcp_list.out'):
    try: d=json.loads(l)
    except Exception: continue
    if d.get('id')==2:
        t=d['result']['tools']; print(len(t)); print([x['name'] for x in t][:60])
    if d.get('id')==1: print('init ok', d['result']['serverInfo'])
"; tail -3 /tmp/mcp_list.err
cd /tmp/ruflo-run && export NODE_USE_ENV_PROXY=1 && { printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'; sleep 15; } | timeout 60 npx -y ruflo@latest mcp start 2>/dev/null > /tmp/mcp_list.out; python3 -c "
import json
for l in open('/tmp/mcp_list.out'):
    try: d=json.loads(l)
    except Exception: continue
    if d.get('id')==2:
        for x in d['result']['tools']:
            if x['name'] in ('memory_store','memory_retrieve'): print(json.dumps(x['inputSchema']))
"
mkdir -p /tmp/mcpclient && cat > /tmp/mcpclient/call.py <<'EOF'
import json, subprocess, sys
# usage: call.py <tool> <json-args>
tool, args = sys.argv[1], json.loads(sys.argv[2])
msgs = [
 {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}},
 {"jsonrpc":"2.0","method":"notifications/initialized"},
 {"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":tool,"arguments":args}},
]
inp = "\n".join(json.dumps(m) for m in msgs) + "\n"
p = subprocess.run(["npx","-y","ruflo@latest","mcp","start"], input=inp, capture_output=True, text=True, timeout=240, cwd="/tmp/ruflo-run", env={**__import__('os').environ, "NODE_USE_ENV_PROXY":"1"})
for l in p.stdout.splitlines():
    try: d = json.loads(l)
    except Exception: continue
    if d.get("id") == 2:
        print(json.dumps(d, indent=1)[:3000])
EOF
cd /tmp/ruflo-run && timeout 300 python3 -I /tmp/mcpclient/call.py memory_store '{"key":"coldpass-probe-key","value":"coldpass-value-7731","namespace":"coldpass"}'; echo rc=$?
cat > /tmp/mcpclient/call.py <<'EOF'
import json, subprocess, sys, os, time
tool, args = sys.argv[1], json.loads(sys.argv[2])
env = {**os.environ, "NODE_USE_ENV_PROXY": "1"}
p = subprocess.Popen(["npx","-y","ruflo@latest","mcp","start"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, text=True, cwd="/tmp/ruflo-run", env=env)
def send(m): p.stdin.write(json.dumps(m)+"\n"); p.stdin.flush()
send({"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}})
send({"jsonrpc":"2.0","method":"notifications/initialized"})
send({"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":tool,"arguments":args}})
while True:
    l = p.stdout.readline()
    if not l: break
    try: d = json.loads(l)
    except Exception: continue
    if d.get("id") == 2:
        print(json.dumps(d, indent=1)[:3000]); break
p.stdin.close(); p.wait(timeout=60)
EOF
cd /tmp/ruflo-run && timeout 400 python3 -I /tmp/mcpclient/call.py memory_store '{"key":"coldpass-probe-key","value":"coldpass-value-7731","namespace":"coldpass"}'; echo rc=$?
cd /tmp/ruflo-run && timeout 400 python3 -I /tmp/mcpclient/call.py memory_retrieve '{"key":"coldpass-probe-key","namespace":"coldpass"}'; echo rc=$?
cd <guest-path> && grep -n -i -E "cron|schedul|--once|--now|webhook|telemetry|loop" README.md | head -30; cd /tmp/ruflo-run && export NODE_USE_ENV_PROXY=1 && timeout 300 npx -y ruflo@latest init --help 2>/dev/null | head -60
mkdir -p /tmp/ruflo-init-demo && cd /tmp/ruflo-init-demo && export NODE_USE_ENV_PROXY=1 && timeout 600 npx -y ruflo@latest init --minimal --no-signup --no-skills-sh --no-global --skip-claude --no-plugin-install < /dev/null > /tmp/init.log 2>&1; echo rc=$?; tail -25 /tmp/init.log; ls -la /tmp/ruflo-init-demo
cd /tmp/ruflo-init-demo && export NODE_USE_ENV_PROXY=1 && timeout 300 npx -y ruflo@latest daemon --help 2>/dev/null | head -40; timeout 120 npx -y ruflo@latest init check 2>/dev/null | tail -3
cd /tmp/ruflo-init-demo && export NODE_USE_ENV_PROXY=1 && timeout 600 npx -y ruflo@latest daemon trigger -w audit > /tmp/trigger.log 2>&1; echo rc=$?; tail -15 /tmp/trigger.log; grep -rn "trigger" <guest-path> 2>/dev/null | head -5
cd <guest-path> && mkdir -p .coldpass && cd /tmp/ruflo-run && NODE_USE_ENV_PROXY=1 timeout 300 python3 -I /tmp/mcpclient/call.py memory_store '{"key":"coldpass-probe-key","value":"coldpass-value-7731","namespace":"coldpass"}' | grep -o 'stored\\\\": true' | head -1; cd <guest-path> && python3 -I - <<'EOF'
import json
W="<guest-path>"
readme=open(W+"/README.md",encoding="utf-8").read()
q1="Use NPX for Ruflo project setup and connect your client to the Ruflo MCP server."
q2="remember across sessions"
for q in (q1,q2): assert q in readme, q
mcp_argv=["npx","-y","ruflo@latest","mcp","start"]
claims=[
 {"kind":"claim","claim":"Ruflo works as an MCP server that clients can call tools on",
  "source":q1,"input":"memory_store key coldpass-probe-key value coldpass-value-7731",
  "expected":"store succeeds and returns the key","probe_kind":"mcp","argv":mcp_argv,
  "tool":"memory_store","arguments":{"key":"coldpass-probe-key","value":"coldpass-value-7731","namespace":"coldpass"},
  "expected_text":"coldpass-probe-key","cwd":"/tmp/ruflo-run"},
 {"kind":"claim","claim":"Ruflo remembers values across sessions",
  "source":q2,"input":"memory_retrieve key coldpass-probe-key namespace coldpass",
  "expected":"the stored value is returned from a new server process","probe_kind":"mcp","argv":mcp_argv,
  "tool":"memory_retrieve","arguments":{"key":"coldpass-probe-key","namespace":"coldpass"},
  "expected_text":"coldpass-value-7731","cwd":"/tmp/ruflo-run"},
]
probe={"kind":"mcp","argv":mcp_argv,"cwd":"/tmp/ruflo-run","tool":"memory_retrieve",
 "arguments":{"key":"coldpass-probe-key","namespace":"coldpass"},"expected_text":"coldpass-value-7731"}
examples=[
 {"kind":"example","claim":"Quick non-interactive init sets up Ruflo in a project",
  "source":"README.md CLI Install (npx ruflo@latest init); checked with init check",
  "input":"init check in a project created by init --minimal","expected":"project reports initialized",
  "argv":["npx","-y","ruflo@latest","init","check"],"cwd":"/tmp/ruflo-init-demo","env":{"NODE_USE_ENV_PROXY":"1"},
  "expected_text":"RuFlo is initialized"},
]
cycles={"detected":True,"checks":[{
 "claim":"Background worker can be triggered manually to run one cycle",
 "source":"v3/@claude-flow/cli/src/commands/daemon.ts",
 "quote":"description: 'Manually trigger a specific worker',",
 "schedule":"daemon background workers (no timer fired; manual trigger)",
 "method":"run-once via daemon trigger -w audit",
 "input":"-w audit",
 "expected":"audit worker runs once and prints its result",
 "kind":"cli","argv":["npx","-y","ruflo@latest","daemon","trigger","-w","audit"],
 "cwd":"/tmp/ruflo-init-demo","expected_text":"Worker audit completed"}]}
src=open(W+"/v3/@claude-flow/cli/src/commands/daemon.ts",encoding="utf-8").read()
assert cycles["checks"][0]["quote"] in src
json.dump(claims,open(W+"/.coldpass/claims.json","w"),indent=1)
json.dump(probe,open(W+"/.coldpass/probe.json","w"),indent=1)
json.dump(examples,open(W+"/.coldpass/examples.json","w"),indent=1)
json.dump(cycles,open(W+"/.coldpass/cycles.json","w"),indent=1)
print("written")
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay; echo rc=$?
pgrep -af "ruflo" | grep -v pgrep | head; cd <guest-path> && mkdir -p .coldpass && python3 -I - <<'EOF'
import json
r={"outcome":"working","fault_owner":None,
"operation":"Start the Ruflo MCP server with npx and call its memory tools: store a value, then read it back from a new server process.",
"operation_scope":"Linux Ubuntu 24.04, Node 22 (README requires >=20), npx ruflo@latest v3.59.17 from npm; offline checker replay of README claims, one manual daemon cycle; local SQLite memory store in /tmp/ruflo-run.",
"steps":[
 "npx -y ruflo@latest --version",
 "npx -y ruflo@latest mcp start (stdio MCP server, tools/list returned 367 tools)",
 "tools/call memory_store key=coldpass-probe-key value=coldpass-value-7731 namespace=coldpass",
 "tools/call memory_retrieve key=coldpass-probe-key namespace=coldpass -> coldpass-value-7731",
 "npx -y ruflo@latest init --minimal --no-signup --no-skills-sh --no-global --skip-claude --no-plugin-install",
 "npx -y ruflo@latest init check",
 "npx -y ruflo@latest daemon trigger -w audit"],
"deviations":[
 "Node/npm were not installed in the guest. Installed Node 22.23.4 with the NodeSource setup_22.x script and apt (sudo); README/package.json requires node >=20.",
 "Did not run the README one-line curl|bash installer or the interactive 'init wizard'; used the documented npx commands instead.",
 "Used init flags --no-signup --no-skills-sh --no-global --skip-claude --no-plugin-install to avoid signup, global ~/.claude writes, and plugin installs. init still enabled ruflo mods in the demo project's .claude/settings.json.",
 "npx-published package runs from /tmp/ruflo-run and /tmp/ruflo-init-demo (outside the checkout), not <guest-path>, as the task requires.",
 "Probe and claim commands assume the memory key stored during setup is still in /tmp/ruflo-run; memory_retrieve depends on that store.",
 "No browser, credentials or external network services were used; no servers were left running."],
"stuck_step":None,"main_blocker":None,"plain_failure":None,
"suggested_fix":None}
json.dump(r,open("<guest-path>","w"),indent=1)
print("report written")
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay | python3 -c "import json,sys; d=json.load(sys.stdin); print(d['valid'], d['problems'], d['replay']['status'])"
ls -la /inputs/coldpass-preflight.py 2>&1; [ -f /inputs/coldpass-preflight.py ] && <env-var>=<guest-path> python3 -I /inputs/coldpass-preflight.py --validate --replay | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('valid'), d.get('problems'), d.get('replay',{}).get('status'))"
cd <guest-path> && python3 -I - <<'EOF'
import json
p="<guest-path>"
r=json.load(open(p))
r["deviations"].append("/inputs/coldpass-preflight.py does not exist in this VM; the validation run used <guest-path> (the checker the task's validate command names), which reported valid=true and replay PASS.")
json.dump(r,open(p,"w"),indent=1)
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay | python3 -c "import json,sys; d=json.load(sys.stdin); print(d['valid'], d['problems'], d['replay']['status'])"; ls -la .coldpass
Earlier attempts (1)

Luna

Native agent · Not tested

Operation / attempted scope npx -y ruflo@latest init wizard

Agent-reported scope: npx ruflo@latest init wizard

Run details
run
ruvnet--ruflo-gpt-6-luna-1792770846888637520
date
Oct 23, 2026
time to working
not recorded
product hosting / execution
Local command in the guest
recorded operation scope
README Quick Start requires Node >=20; installed guest Node is 18.19.1
model
gpt-6-luna
agent / version
codex / codex-cli 0.163.0
platform
linux
reported cost
not reported (not assumed free)
Recorded source
https://github.com/ruvnet/ruflo
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "88349655ebc2de8f9bf702aaf31d6be768e1ea11", "url": "https://github.com/ruvnet/ruflo"}
Test version
readme-f72312298d35d84837d4fc5f6f22b138d54d456600b5ed431e36e8f5db931dbf
revision
88349655ebc2de8f9bf702aaf31d6be768e1ea11
Whose fault: prerequisite · diagnosed

Node.js >=20 required; available install attempt did not provide it

Fix: fix-9a0507d260f79f02f228.

Recorded blocker / warning

Step: README quick start invocation

Node.js >=20 required; available install attempt did not provide it

Safety: Review signals: 14 download and execute, 10 hardcoded secret, 1640 known vulnerability. 130 static matches retained as context.

Review signals: 14 download and execute, 10 hardcoded secret, 1640 known vulnerability. 130 static matches retained as context.

Source contains download and execute; review its purpose. 4 distinct locations. 14 findings.

Gitleaks found a possible hardcoded secret; value withheld. 10 distinct locations. 10 findings.

OSV reports a known vulnerability in this dependency version. 85 distinct locations. 1003 findings.

29 download and execute matches retained as context; full list in the evidence.

3 encoded execution matches retained as context; full list in the evidence.

95 hardcoded secret matches retained as context; full list in the evidence.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this runREADME makes no concrete product claims.

Examples

  • Install prerequisite runtime and invoke README quick start: README command npx ruflo@latest init wizard attempted after installing Ubuntu nodejs/npm; node v18.19.1 violates package engine >=20, and npm install --global n && n 22.14.0 failed with exit 243 and no output. Initial npx did install package but emitted EBADENGINE and did not establish successful operation.

    Source: README.md, Get started with Ruflo

    Expected: documented command completes successfully

    Observed: README command npx ruflo@latest init wizard attempted after installing Ubuntu nodejs/npm; node v18.19.1 violates package engine >=20, and npm install --global n && n 22.14.0 failed with exit 243 and no output. Initial npx did install package but emitted EBADENGINE and did not establish successful operation.

Local or hosted: local

Suggested next step (agent-reported): Install Node.js 20 or newer in the guest, then rerun npx ruflo@latest init wizard and validate MCP functionality.

What the agent did

npx ruflo@latest init wizard

cd <guest-path> && vault-search 'ruflo README MCP setup prior work' || true; rg --files -g 'AGENTS.md' -g 'README*' -g 'package.json' -g 'pnpm-lock.yaml' -g 'package-lock.json' -g 'yarn.lock' -g 'Makefile' | head -80; cat <host-path> 2>/dev/null; cat ~/.agents/skills/i-have-adhd/SKILL.md 2>/dev/null; cat ~/.agents/skills/ponytail/SKILL.md 2>/dev/null; cat ~/.agents/skills/p3-mode/SKILL.md 2>/dev/null; cat AGENTS.md 2>/dev/null; git status --short --branch; git rev-parse HEAD; git remote -v; python3 --version; id -u; cat README.md
cd <guest-path> && ls -la | head; git init && git remote add origin https://github.com/ruvnet/ruflo && git fetch --depth 1 origin 88349655ebc2de8f9bf702aaf31d6be768e1ea11 && git reset --mixed FETCH_HEAD; cat /etc/os-release; python3 --version; node --version; npm --version; sed -n '1,100p' README.md; grep -nE 'Prerequisites|Quick Start|npm test|pnpm|npx ruflo|swarm init' README.md | head -60; cat package.json
cd <guest-path> && sudo -n apt-get update && sudo -n apt-get install -y nodejs npm; node --version; npm --version; mkdir -p <guest-path>; cd /tmp; NODE_USE_ENV_PROXY=1 npx -y ruflo@latest init wizard --help
cd <guest-path> && npm install --global n --silent && n 22.14.0;
cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/probe.json <<'EOF'
{"kind":"cli","argv":["npx","-y","ruflo@latest","init","wizard","--help"],"cwd":"/tmp","env":{"NODE_USE_ENV_PROXY":"1"},"expected_returncode":1,"expected_text":"node"}
EOF
cat > .coldpass/claims.json <<'EOF'
[]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"Install prerequisite runtime and invoke README quick start","source":"README.md, Get started with Ruflo","reason":"README command npx ruflo@latest init wizard attempted after installing Ubuntu nodejs/npm; node v18.19.1 violates package engine >=20, and npm install --global n && n 22.14.0 failed with exit 243 and no output. Initial npx did install package but emitted EBADENGINE and did not establish successful operation."}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"README describes CLI setup and MCP operation; no product scheduler or periodic cycle was found in the documented entry point. Setup could not run due to unsupported Node 18 runtime." ,"checks":[]}
EOF
mkdir -p .coldpass && cat > .coldpass/report.json <<'EOF'
{"outcome":"blocked","fault_owner":"prerequisite","operation":"npx ruflo@latest init wizard","operation_scope":"README Quick Start requires Node >=20; installed guest Node is 18.19.1","steps":["git fetch pinned commit 88349655ebc2de8f9bf702aaf31d6be768e1ea11","sudo -n apt-get update","sudo -n apt-get install -y nodejs npm","NODE_USE_ENV_PROXY=1 npx -y ruflo@latest init wizard --help"],"deviations":["Ubuntu nodejs/npm installed Node 18.19.1, below package engine >=20","npm install --global n && n 22.14.0 failed with exit 243 and no output"],"stuck_step":"README quick start invocation","main_blocker":"Node.js >=20 required; available install attempt did not provide it","plain_failure":"The documented Ruflo setup did not run successfully because the guest has Node 18, while Ruflo requires Node 20 or newer.","suggested_fix":"Install Node.js 20 or newer in the guest, then rerun npx ruflo@latest init wizard and validate MCP functionality."}
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
cd <guest-path> && cat .coldpass/probe.json && sed -i 's/"init","wizard","--help"/"init","wizard"/' .coldpass/probe.json && sed -i 's/"expected_returncode":1,"expected_text":"node"/"expected_returncode":1,"expected_text":"EBADENGINE"/' .coldpass/probe.json && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay