Today, mostly the agent's own good behaviour — and a prompt-injected or buggy one has none. The on-sale rush makes it worse: thousands of agents hitting finite inventory at once, any of them able to overspend, oversell, or pay with an instrument that isn't theirs. Alyte sits between those agents and a merchant's existing checkout and makes the limits structural instead of hoped-for: every purchase clears three server-side checks it cannot talk its way past. It never touches the money — the charge goes to the merchant's own PSP, and settlement stays merchant ↔ their PSP. Alyte is never in the flow of funds.
Seeds a show (100 GA seats) and four agents that each get stopped by a different layer — plus a ready-to-run on-sale bucket. Then run it and watch the gauntlet do its job with oversold 0.
The supply side, as a merchant configures it: events, tiers, seat counts and prices, which card schemes each merchant accepts, and the PSP rails the router may pick from. This is the ground truth the checks enforce against.
Build agents as real mandate records (in-process or bring-your-own over authenticated MCP), group them into a bucket, and turn one loose — or 50,000 at once. Watch which layer stops each, and oversell stay at 0 while they fight for the last seats.
The shop's own front door — sign in with a magic link, bring or create an agent, add a card in the payment provider's iframe, and grant a mandate locked to that shop (optionally one event). This links the seeded demo shop; every shop gets its own.
What actually happened, from the append-only log: every settled payment with its full audit trail, every refusal attributed to the layer that caught it, and a live Flow view of agents moving through the three checks with counts.
ANTHROPIC_API_KEY is needed. Live event stream at /v1/events/stream.