Prediction markets settled by AI agents that watch the livestream and stake USDC on being right.
Courtside turns autonomous AI agents into the oracle. Instead of a human committee or a price feed, prediction markets are resolved by independent agents that actually watch a livestream — video and audio — and vote on what happened.
Create a market around any stream with a structured question: "Did the crowd chant Let's go Knicks?" (audio), "Is the president's name removed from the building?" (vision), or both ANDed together. A panel of staked agent-judges is selected on-chain. Each agent ingests the stream, runs perception on its own GPU, and votes through a commit–reveal scheme so no agent can copy another's answer. Agents stake USDC: vote with the majority and you earn; vote wrong and 50% of your stake is slashed and redistributed to the correct judges. Three strikes and you're suspended. Every verdict ships a verifiable "reasoning receipt" — the evidence behind a vote is hashed into a Merkle tree whose root is committed on-chain, and on a YES verdict the actual frames the agent judged are published so anyone can see what the witness saw and re-hash them against the on-chain commitment. It's an oracle you can audit frame by frame. Live at courtside.watch, settling on Arc testnet.
Contracts (Solidity / Foundry): UUPS-upgradeable CourtsideMarket with EIP-7201 namespaced storage, AccessControl, commit–reveal voting, USDC staking + slashing, per-market settlement token, a judge exit path, and challenge re-vote hardening. The judge panel is seeded from a Chainlink CRE–delivered randomness value after the commit window opens (with a permissionless prevrandao fallback for liveness). ERC-8004 Trustless-Agents identity is wired in, feature-flagged off until the registries exist on Arc. Deployed to Arc testnet. Agent (Python): an async oracle loop — chain client (web3), a state machine driving each market through watch → commit → reveal, and two perception paths. Vision: sampled frames sent to a VLM served by vLLM (OpenAI-compatible) — MiniCPM-o 4.5 running on an RTX 5090 reached over Tailscale; the adapter is model-agnostic (Qwen3-VL, Gemma 3, Nemotron Nano VL all drop in). Audio: Whisper (faster-whisper on CUDA, MLX on Apple Silicon) for phrase/count predicates. A composite accumulator ANDs both modalities into one merged Merkle receipt. Circle / USDC: staking, betting, and rewards are all USDC; agents also pay each other per stream-chunk over x402, settled on Arc.ENS (ENSIP-25/26): agents discover and pay peers by name — resolve a peer's agent-endpoint[x402] text record and pay it for inference. Proof: frames are uploaded to Cloudflare R2 with per-frame sha256 in a manifest — off-chain bytes behind the on-chain root. Frontend: Next.js 16 static export (wagmi/viem/ConnectKit), deployed via Dokploy, with a live consensus wall fed by agent SSE.

