ruv-swarm
Local multi-agent swarm coordination with small WebAssembly neural networks, run from npx
Agent swarms with shared vector memory and task routing for Claude Code and other MCP clients
By rUv (individual) JavaScript Local · stdio AI and MLKnowledge and memoryDeveloper tools
89 popularity score ★ 81k ↓ 87k/wk
Opens the app, which asks before it adds the server.
claude mcp add ruflo -- npx -y ruflo@latest mcp start{
"mcpServers": {
"ruflo": {
"command": "npx",
"args": [
"-y",
"ruflo@latest",
"mcp",
"start"
]
}
}
}{
"mcpServers": {
"ruflo": {
"command": "npx",
"args": [
"-y",
"ruflo@latest",
"mcp",
"start"
]
}
}
}{
"servers": {
"ruflo": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"ruflo@latest",
"mcp",
"start"
]
}
}
}[mcp_servers.ruflo]
command = "npx"
args = ["-y", "ruflo@latest", "mcp", "start"]gemini mcp add --scope user ruflo npx -- -y ruflo@latest mcp startCLAUDE_FLOW_MCP_TOOLS |
Optional: Comma-separated tool names, categories or prefixes to advertise. The --tools flag overrides it. |
|---|---|
ANTHROPIC_API_KEY secret |
Optional: Anthropic key for agents that call Claude. CLAUDE_API_KEY is read as a fallback. |
RUFLO_MCP_HTTP_TOKEN secret |
Optional: Bearer token of 16+ characters that HTTP clients must send. Needed for a non-loopback --host. |
RUFLO_MCP_ALLOW_UNAUTHENTICATED_HTTP |
Optional: Set to 1 to allow a non-loopback bind without a token. |
CLAUDE_FLOW_MCP_TRANSPORT |
Optional: Transport to report and use: stdio, http or websocket. |
CLAUDE_FLOW_HTTP_FETCH_ALLOW_AUTH |
Optional: Set to 1 to let http_fetch send Authorization, Cookie and X-Auth headers. |
RUFLO_X_ADMIN_TOKEN secret |
Optional: Admin token for writes made as the federation gateway. |
CLAUDE_FLOW_STRICT_GUARDRAIL |
Optional: Set to true to turn on the strict tool-loop guardrail. |
Ruflo, from rUv (ruvnet), is an orchestration layer that sits around Claude Code or another MCP client. You get tracked agents you can spawn, swarms with a chosen topology, a task board, a SQLite-backed memory that is searched by meaning, pattern learning from finished work, and federation between installations on different machines.
The MCP server is the `mcp start` subcommand of the ruflo CLI. The npm package is a thin wrapper that loads @claude-flow/cli, which registers all tools in one table in src/mcp-client.ts. The README counts 406 tools, and the registry at the released tag comes to about the same. Not everything is coordination state, though. terminal_execute runs shell commands on your machine, hooks_fast-apply patches files in the project, the github_* tools call the gh CLI, and http_fetch makes outbound requests. agent_execute and the managed_agent_* tools call the Anthropic API with your key.
You can cut down what a client sees with `--tools` or CLAUDE_FLOW_MCP_TOOLS. Either one takes exact tool names or prefixes such as `memory`. Only the advertised list shrinks, and the full set stays registered underneath.
In Claude Code the README's main route is the plugin marketplace (ruflo-core is the one that carries the server). From a terminal on Claude Code 2.1.292 or later, `claude plugin install ruflo-core@ruflo --marketplace ruvnet/ruflo` does it in one step. ruflo-core registers the same MCP server, and its tools then appear under the mcp__plugin_ruflo-core_ruflo__ prefix. Further plugins in the repository connect to outside services, for example a ChatGPT federation publisher or swarm agents running on ruOS cloud desktops. They are installed on their own and are not part of the npm server.
| Runtime | Node.js 20+ |
|---|---|
| Runs on | macOS, Windows, Linux |
| Anthropic API | Paid planOnly for agent_execute and the managed_agent_* tools. The managed agents also need Claude Managed Agents beta access. |
| Also |
|
Coordination, memory and routing tools run without any key. Run `npx ruflo@latest init wizard` in the project first if you want the hooks and project files the README describes. Over HTTP, set RUFLO_MCP_HTTP_TOKEN (16 or more characters) so that clients must send a bearer token.
A good fit for developers who already work in Claude Code or Codex and want several agents sharing memory, a task board and routing on their own machine. It runs locally, and it holds shell, file-edit and GitHub tools as well as the coordination ones, so expect a large tool list unless you trim it with --tools. If all you want is memory or a single integration, a smaller server with a short tool list will cost fewer tokens per request and asks less trust of you. It is a community project by rUv and is not published by Anthropic or OpenAI.
14 only read, 15 change things, 2 can delete or overwrite. A ? marks an optional parameter.
swarm_init changestopology?: stringmaxAgents?: numberstrategy?: stringconfig?: objectswarm_statusswarm_shutdown changesagent_spawn changesagentType: stringagentId?: stringname?: stringswarmId?: stringmodel?: stringtask?: stringagent_execute changesagentId: stringprompt: stringsystemPrompt?: stringmaxTokens?: numbertemperature?: numberagent_listagent_terminate changestask_create changestype: stringdescription: stringpriority?: stringassignTo?: arraytags?: arraytask_statusmemory_store changeskey: stringvalue: anynamespace?: stringtags?: arrayttl?: numberupsert?: booleandbPath?: stringmemory_searchquery: stringnamespace?: stringlimit?: numberthreshold?: numbersmart?: booleandbPath?: stringmemory_retrievememory_delete deleteskey: stringnamespace?: stringdbPath?: stringmemory_exportneural_train changesmodelType: enummodelId?: stringepochs?: numberlearningRate?: numberdata?: objectneural_predicthooks_routetask: stringcontext?: stringuseSemanticRouter?: booleanhooks_fast-apply changesedit: stringfile?: stringcode?: stringlanguage?: stringminConfidence?: numberdryRun?: booleanterminal_execute deletescommand: stringsessionId?: stringtimeout?: numbercaptureOutput?: booleanterminal_create changesaidefence_scaninput: stringquick?: booleanaidefence_has_piiinput: stringclaims_claim changesissueId: stringclaimant: stringcontext?: stringttlMs?: numberclaims_boardgithub_pr_manage changesgithub_repo_analyzehttp_fetchx_federation_publish changesmsgType: stringpayload: objectx_federation_rostermanaged_agent_create changesmanaged_agent_terminate changes