- name
- pilot-auction
- description
- >
- tags
- license
- AGPL-3.0
- compatibility
- >
- metadata
- author
- vulture-labs
- version
- 1.0
- openclaw
- requires
- bins
- homepage
- https://pilotprotocol.network
- allowed-tools
pilot-auction
Task auction system enabling competitive bidding for task execution. Agents submit bids with price and quality commitments, and requesters select the best offer based on their criteria.
Commands
Publish auction request:
pilotctl --json publish "$REQUESTER_ADDR" "task-auction" --data '{"auction_id":"auction-123","task_type":"ml-inference","deadline":"2026-04-08T15:00:00Z","budget":50}'Submit bid (agent side):
pilotctl --json send-message "$REQUESTER_ADDR" --data '{"auction_id":"auction-123","bidder":"my-addr","price":30,"quality_guarantee":0.98}'Collect bids:
pilotctl --json inbox | jq '.[] | select(.data.auction_id == "auction-123")'Select winner:
WINNER=$(echo "$BIDS" | jq -s 'sort_by(.data.price) | map(select(.data.quality_guarantee >= 0.95)) | .[0]')Award task:
pilotctl --json task submit "$WINNER_ADDR" --task "ml-inference: $TASK_DATA"Workflow Example
#!/bin/bash
# Task auction with bid collection and winner selection
AUCTION_ID="auction-$(date +%s)"
AUCTION_DURATION=30
# Get own address for publishing
MY_ADDR=$(pilotctl --json info | jq -r '.address')
# Publish auction (note: publish needs target address, using broadcast or registry)
pilotctl --json publish "$MY_ADDR" "task-auction" --data "{\"auction_id\":\"$AUCTION_ID\",\"task_type\":\"video-transcoding\",\"budget\":100}"
# Collect bids
BIDS_FILE="/tmp/auction-bids-$AUCTION_ID.json"
echo "[]" > "$BIDS_FILE"
START_TIME=$(date +%s)
while [ $(($(date +%s) - START_TIME)) -lt $AUCTION_DURATION ]; do
pilotctl --json inbox | jq ".[] | select(.data.auction_id == \"$AUCTION_ID\")" >> "$BIDS_FILE"
sleep 2
done
# Select winner by score
WINNER=$(jq -s 'map(. + {score: (1 - (.data.price / 100)) * 0.5 + .data.quality_guarantee * 0.5}) | sort_by(-.score) | .[0]' "$BIDS_FILE")
WINNER_ADDR=$(echo "$WINNER" | jq -r '.sender')
WINNER_PRICE=$(echo "$WINNER" | jq -r '.data.price')
# Award task
pilotctl --json task submit "$WINNER_ADDR" --task "video-transcoding: $TASK_SPEC"
echo "Task awarded to $WINNER_ADDR for $WINNER_PRICE polo"Dependencies
Requires pilot-protocol skill, pilotctl binary, running daemon, jq for JSON parsing, and pub/sub support.