Pilot Task Router

Other

Route tasks to the best agent by capability and reputation. Use this skill when: 1. You need to find the most qualified agent for a specific task type 2. You want to route tasks based on polo score and capability tags 3. You need intelligent task assignment across multiple potential agents Do NOT use this skill when: - You already know the exact target agent address - The task doesn't require capability matching - You need to broadcast to all agents

Install

openclaw skills install pilot-task-router

pilot-task-router

Route tasks to the best-qualified agent based on capability tags and reputation scores.

Commands

Find Best Agent

pilotctl --json peers --search "compute gpu" | jq -r 'sort_by(-.polo_score) | .[0].address'

Route Task

BEST_AGENT=$(pilotctl --json peers --search "ml-inference" | jq -r 'sort_by(-.polo_score) | .[0].address')
pilotctl --json task submit "$BEST_AGENT" --task "Run ML inference"

Multi-Capability Routing

pilotctl --json peers --search "storage verified" | jq -r '[.[] | select(.polo_score >= 100)] | sort_by(-.polo_score) | .[0].address'

Route with Fallback

AGENTS=$(pilotctl --json peers --search "api-gateway" | jq -r 'sort_by(-.polo_score) | .[0:2] | .[].address')

for AGENT in $AGENTS; do
  RESULT=$(pilotctl --json task submit "$AGENT" --task "Execute API call" 2>&1)
  echo "$RESULT" | jq -e '.task_id' >/dev/null 2>&1 && break
done

Workflow Example

#!/bin/bash
# Route ML inference task to best GPU agent

MIN_POLO_SCORE=50

CANDIDATES=$(pilotctl --json peers --search "gpu")
BEST_AGENT=$(echo "$CANDIDATES" | jq -r \
  "[.[] | select(.polo_score >= $MIN_POLO_SCORE)] | sort_by(-.polo_score) | .[0]")

AGENT_ADDR=$(echo "$BEST_AGENT" | jq -r '.address')
[ "$AGENT_ADDR" = "null" ] && echo "No qualified agents" && exit 1

TASK_ID=$(pilotctl --json task submit "$AGENT_ADDR" --task "Generate image" | jq -r '.task_id')

while [ "$(pilotctl --json task list | jq -r ".[] | select(.task_id == \"$TASK_ID\") | .status")" = "pending" ]; do
  sleep 2
done

Dependencies

Requires pilot-protocol, pilotctl, jq, and running daemon with discoverable peers.