agentdb-advanced
Master advanced AgentDB features including QUIC synchronization, multi-database management,…
Run a ruflo swarm agent on the user's own ruOS cloud desktop through the tenant-authenticated fleet MCP, stream its output, and record it in ruflo's swarm state. Use when the user wants an agent to run on a ruOS desktop, asks to "run this on my ruOS desktop", or places a swarm
$ npx -y skills add ruvnet/ruflo --skill ruos-host-run --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ruos-host-runContext preview
The summary Claude sees to decide when to auto-load this skill.
Run a ruflo swarm agent on the user's own ruOS cloud desktop through the tenant-authenticated fleet MCP, stream its output, and record it in ruflo's swarm state. Use when the user wants an agent to run on a ruOS desktop, asks to "run this on my ruOS desktop", or places a swarm
name: ruos-host-run description: Run a ruflo swarm agent on the user's own ruOS cloud desktop through the tenant-authenticated fleet MCP, stream its output, and record it in ruflo's swarm state. Use when the user wants an agent to run on a ruOS desktop, asks to "run this on my ruOS desktop", or places a swarm agent on a remote ruOS host. argument-hint: "<desktop> <task>" allowed-tools: Bash(node *) mcp__ruos__desktop_status mcp__ruos__desktop_exec mcp__ruos__desktop_keepawake mcp__ruos__desktop_start mcp__ruos__llm_route_get
Transport rules — non-negotiable:
equivalents) or the plugin CLI. Never call a desktop on port 17870 and never set a `Host` header yourself (ruOS ADR-070: that executor has no per-tenant auth).
`desktop_exec` command from task text.
`CLI` below is `node "${CLAUDE_PLUGIN_ROOT}/scripts/cli.mjs"`.
`desktop_exec` output is framed: the first line echoes your command (`▶ run: …`), and the last lines are `✓ SUCCESS…` and `📝 transcript:`. Every marker the desktop prints is `RUOS<nonce>_NAME`, on its own line, where `<nonce>` is the `nonce` from `CLI build`. That token never appears in the echoed command, so match only complete lines that start with it. Output is capped at about 4 KiB, so `poll` returns 2 KiB slices. Never call `desktop_delete` or `secret_delete`; deleting is the user's job.
1. **Pick the host.** Call `desktop_status`. Resolve the user's desktop by `machine_id`, `fly_machine_id` or exact `display_name`; if it is not in that list, stop. Save the raw JSON to a temp file (`status.json`) for step 4. 2. **Liveness.** A desktop is up only if `heartbeat_status` is not `asleep`/`missing`/`stale` and `last_heartbeat_at` is recent. If it is down, ask before `desktop_start` (billable), then re-poll `desktop_status` until the heartbeat advances. 3. **Auto-stop.** `CLI status` prints `nextAutoStop` (weekday 23:00 America/Toronto). If the run could cross it, tell the user and stop unless they accept. `desktop_keepawake` blocks idle autosleep only; it does not override the 23:00 stop. 4. **Build + record.** Write the task to a file, then:
`poll`, `stop`, `promptSha256`.
— registers the agent through ruflo's `agent_spawn` (with `config.host`) and claims `ruos-run-<runId>` via `claims_claim`. Before launching, call `llm_route_get`. Stop if the desktop has no route. If the gateway is "unconfigured" but the route is "shared", warn and continue. 5. **Launch.** Call `desktop_exec` with each `steps[i]` in order (`machine` = the desktop's `fly_machine_id`). The last step prints `RUOS<nonce>_SHA:<hash>` — it must equal `promptSha256`, else `desktop_exec` the `stop` string and abort. `RUOS<nonce>_NO_RUNNER` means `claude` is not installed there. 6. **Stream.** Call `desktop_exec` with `poll` (rebuild with `CLI build --run <runId> --nonce <nonce> --offset <n> ...` as the offset grows, or use `CLI run` for automatic polling). Output is `RUOS<nonce>_POLL:<exit|->:<size>:<alive 0|1>:<base64>`; pass the base64 to `CLI record output --run <runId> --b64 <b64>` and show the decoded text. Back off 1s→5s between empty polls — each poll is audited on ruOS and serialises behind the desktop's run lock. 7. **Finish.** When exit is not `-` and all bytes are read: `CLI record end --run <runId> --exit <code>` (agent → idle, claim released). On failure, check `desktop_status`: a stopped desktop means it was auto-stopped mid-run. 8. **Stop early** only on the user's request: `desktop_exec` the `stop` string.
For unattended runs from a terminal, `CLI run --desktop "<ref>" --prompt-file task.txt` does steps 1–7 itself (needs `RUOS_MCP_URL` + `RUOS_MCP_TOKEN`, or `--transport ssh` with `RUOS_SSH_KEY` when ruflo runs on a same-tenant ruOS desktop).
An agent meta-harness for Claude Code and Codex. 📖 RuFlo Explained — Build an AI Team That Plans, Remembers, Tests, and Improves A 14-chapter guide: from the basic idea to a first useful task, then memory, agent teams, plugins, cost and verification.
Repo: ruvnet/ruflo
Master advanced AgentDB features including QUIC synchronization, multi-database management,…
Create and train AI learning plugins with AgentDB's 9 reinforcement learning algorithms.…
Implement persistent memory patterns for AI agents using AgentDB. Includes session memory,…
Optimize AgentDB performance with quantization (4-32x memory reduction), HNSW indexing (150x…
Implement semantic vector search with AgentDB for intelligent document retrieval, similarity…
Quantum-resistant, self-learning version control for AI agents with ReasoningBank…