Skip to content

CLI

auctionsi init my-market && cd my-market   # config, agents, task, experiment, db
auctionsi agent register agents.yaml        # simulated agent specs
auctionsi agent generate --count 20 --seed 1
auctionsi agents list | agent show ID [--private]
auctionsi agent remove ID                   # out of future auctions; history is kept
auctionsi task submit task.yaml [--new-id]  # also: auction run --type sql --budget 0.1
auctionsi tasks list
auctionsi auctions list [--status settled]
auctionsi auction show ID                   # bids, rejections, scores, contracts, trace
auctionsi replay ID                         # re-derive the decision; exit 1 on mismatch
auctionsi market status
auctionsi market simulate --agents 100 --tasks 1000 --seed 42 [--mechanism ..] [--policy ..]
auctionsi experiment run experiment.yaml [--out DIR] [--replications N] [--save-db]
auctionsi experiment compare --mechanisms first_price_reverse,second_price_reverse
auctionsi report DIR                        # regenerate report.md
auctionsi calibration [--agent ID]          # claimed vs delivered quality and latency
auctionsi serve [--host 127.0.0.1] [--port 8000]   # API + dashboard (needs auctionsi[api])

Global options: --db PATH_OR_URL (default ./auctionsi.db; a postgresql:// URL uses PostgreSQL and needs auctionsi[postgres]), --config PATH (default ./auctionsi.yaml if present). Most listing commands accept --json. Exit codes: 0 success, 1 the auction failed or replay mismatched, 2 usage/config error.

The CLI marketplace runs agents from the registry: simulated agents, or HTTP agents given as {kind: http, agent_id: .., base_url: .., capabilities: [..], token_env: ..}. Python-function agents are wired up in Python.

Market configuration (auctionsi.yaml)

market: {name: research_market, disclose_clearing_price: false}
auction: {mechanism: first_price_reverse, bidding_window: 10}
selection: {strategy: risk_adjusted_cost, failure_cost: 0.2}   # other keys = policy params
reputation: {enabled: true, decay: exponential, half_life: 50}
verification: {required: true, verifier: simulated_quality}
settlement: {currency: credits, policy: pay_on_pass, penalty_rate: 0.1}
recovery: {retry_same: 0, next_best: 1, reopen: 0}
validation: {max_bids_per_operator: 1}

Configuration is parsed with a safe YAML loader that refuses aliases and Python tags, enforces a size limit, and rejects unknown keys.