Pilot Auction

v1.0.0

Task auction system where agents bid and requester selects best offer. Use this skill when: 1. You want competitive pricing for task execution 2. You need to...

0· 107· 1 versions· 0 current· 0 all-time· Updated 12h ago· MIT-0
byCalin Teodor@teoslayer

Install

openclaw skills install pilot-auction

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.

Version tags

latestvk979gz3k85rg0ax757c48hsn7984f1ea

Runtime requirements

Binspilotctl