Skill Store 33

Ruos Host Run

Run a ruflo swarm agent on the user's own ruOS cloud desktop through the tenant-authenticated fle…

by ruvnet · MIT

The 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 agent on a remote ruOS host.

Run a ruflo agent on a ruOS desktop (session path, ADR-405)

Transport rules — non-negotiable:

  • Use ONLY the fleet MCP tools (mcp__ruos__*, or the claude.ai ruOS connector's 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).
  • Send ONLY the command strings printed by cli.mjs build. Never compose a 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:
    • CLI build --prompt-file task.txt [--model sonnet] → JSON with runId, steps[], poll, stop, promptSha256.
    • CLI record start --run <runId> --desktop "<ref>" --desktop-status-file status.json --task "<one-line summary>" — 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).

Use this skill

Connect your agent to the Skill Store MCP server and ask for it by ref: ruvnet/ruos-host-run-67199217226.

Download SKILL.md · Markdown version

Details

Publisher
ruvnet
Category
AI & Agents › Orchestration & multi-agent
License
MIT
Updated
2026-10-18

References

More from ruvnet