Asi orchestrate
Orchestrate multiple AI agents across Vers VMs for parallel task execution
git clone https://github.com/plurigrid/asi
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/orchestrate" ~/.claude/skills/plurigrid-asi-orchestrate && rm -rf "$T"
skills/orchestrate/SKILL.mdVM Orchestration Skill
You can orchestrate multiple AI agents running on Vers VMs. Each VM runs its own vers instance that you can control via the CLI.
Architecture
You (orchestrator) │ │ vers → localhost:9999 │ ├── VM-1 (vers on :80) ─── works on task ├── VM-2 (vers on :80) ─── works on task └── VM-N (vers on :80) ─── works on task
CLI Commands
All commands use the vers binary:
vers <command> [args]
The vers server must be running (default port 9999). Commands communicate with it via JSON-RPC.
Golden Image
New VMs are created from a golden image with:
- Bun 1.3.6 pre-installed
- vers with all dependencies
- Pre-configured .env with API keys
This makes VM creation fast (~2-3 seconds).
Available Commands
List VMs
vers vms
Create a VM
Creates a new VM from the golden image.
vers vm create "description of what this VM will work on"
Returns:
{ "vmId": "...", "agentUrl": "https://<vmId>.vm.vers.sh" }
Run a Prompt on VM(s)
Send a prompt to all VMs (fire-and-forget, doesn't wait for completion):
vers vm run "your task here"
Execute Command on VM (SSH)
Run arbitrary shell commands on a VM via SSH:
vers vm exec <vmId> "ls -la /root"
Returns:
{ "stdout": "...", "stderr": "...", "exitCode": 0 }
Use this to:
- Check agent status:
curl -s http://localhost:80/health - View logs:
tail -100 ~/.vers-agent/logs/vers-agent.log - Run git commands:
(in working directory)git status - Restart agent:
systemctl restart vers-agent
Sync Local Git to VM
Sync your local git repository to a VM:
vers vm sync <vmId>
Evaluate VM (Build/Test/Lint)
Run evaluation commands on a VM:
vers vm eval <vmId>
Watch VM Events (SSE Stream)
Real-time streaming of events from all VMs, tagged by VM ID:
vers vm watch # Filter to specific VMs (comma-separated) vers vm watch "vm-id-1,vm-id-2"
Output shows VM ID prefix with color coding:
[a1c9d57b] Hello! I'm working on the task... [df6f41fb] Starting implementation... [a1c9d57b] ✓ Done
Orchestration Patterns
Pattern 1: Parallel Exploration
Create multiple VMs and try different approaches:
# 1. Create VMs for different approaches vers vm create "implement feature X - approach A" vers vm create "implement feature X - approach B" vers vm create "implement feature X - approach C" # 2. Run task on all VMs vers vm run "implement feature X using your assigned approach" # 3. Watch progress in real-time vers vm watch
Pattern 2: Divide and Conquer
Split a large task across multiple VMs:
# Create VMs for each subtask vers vm create "implement auth module" vers vm create "implement database layer" vers vm create "implement API endpoints" # Dispatch work to all vers vm run "implement your assigned module" # List VMs to check status vers vms
Pattern 3: Code Sync & Deploy
Sync local git changes to VMs:
# Sync local git to a VM vers vm sync <vmId> # Or execute commands directly vers vm exec <vmId> "git pull"
Pattern 4: Different Prompts to Different VMs
Send unique prompts to specific VMs using curl with vmIds filter:
# Get VM IDs first vers vms # Send different prompts (use curl for vmIds filtering) curl -sX POST http://localhost:9999/rpc -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"vm/run","params":{"prompt":"Write a haiku","vmIds":["vm-id-1"]}}' curl -sX POST http://localhost:9999/rpc -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"vm/run","params":{"prompt":"Explain recursion","vmIds":["vm-id-2"]}}'
Key Principles
- Branches are cheap - Fork VMs liberally to explore alternatives
- Commits cost money - Only commit checkpoints when you need to preserve state long-term
- Side effects are real - VMs have full network access, actions are not reversible
- Fire and forget - vm run dispatches work but doesn't wait for completion
- Check status - Use
for quick overview,vms
for real-time streamingvm watch - Agent on port 80 - Each VM's vers runs on port 80, use vm exec + curl to interact
- Multiplexed events - Use
to monitor all VMs in one stream, tagged by vmIdvm watch
When to Use This Skill
Use
/orchestrate when you need to:
- Run the same task with different approaches in parallel
- Split a large task across multiple agents
- Explore a solution space (MCTS-style)
- Scale up compute for a complex problem
- Deploy code changes to remote VMs
$ARGUMENTS