- name
- pilot-task-router
- description
- >
- tags
- license
- AGPL-3.0
- compatibility
- >
- metadata
- author
- vulture-labs
- version
- 1.0
- openclaw
- requires
- bins
- homepage
- https://pilotprotocol.network
- allowed-tools
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
doneWorkflow 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
doneDependencies
Requires pilot-protocol, pilotctl, jq, and running daemon with discoverable peers.