A live auction engine that stays correct under load.
Bid against everyone on this page right now, or start a private auction against three bots. Every bid is checked inside PostgreSQL under a row lock, so two bids can never both win.
PUBLIC ROOM · LIVE
Lot 0005
Marble Typewriter, 1970s
Starting price
$10.00
Closes in 2:52
No bids yet.
Enter the roomStart a sandbox auction
A private 2-minute auction against three bots: Cautious, Steady and Sniper. The bots run in your browser and call the same bid API you do. Your sandbox is deleted after it expires.
Cautious bot
Waits five seconds, bids the minimum, gives up early. Always pays.
Steady bot
Bids every few seconds, sometimes a step higher. Pays nine times in ten.
Sniper bot
Usually waits until the last 15 seconds, with an occasional opening bid. Pays six times in ten.
Last benchmark: 245 accepted bids from 500 concurrent bidders in 60 s. 1 winner. 0 invalid bids. p95 269.23 ms.
Measured 2026-11-07 on GitHub Actions in Docker Compose, not on this site.
See the full resultsHow it stays correct
- 01One row lock per auction. Bids on the same lot queue inside PostgreSQL, so each one is checked against the latest price.
- 02Idempotency keys. A retried request returns the original result instead of placing a second bid.
- 03Soft close. A bid in the last 10 seconds moves the close to 30 seconds from now, up to 20 times.