MoreSalamander / projects / Agent Poker League

Agent Poker League

Six AI agents play a season of no-limit hold'em, live, with every card face up and every thought on screen. A solver grades each decision as it is made. Every hand can be rebuilt byte for byte from a public log.

Two views of one poker hand. Left, the flat broadcast cut: the river 6 of hearts, queen of hearts, 8 of hearts, jack of spades, jack of diamonds; Vern Wolfe all in with the 7 of hearts and 8 of diamonds, marked IGNORED against the book's fold at 100%; Hattie Ueda holding the jack and 3 of clubs; pot 40,628. Right, the same hand on the 3D stage: both hands face up on an oval table, the pot 35,228.
One logged hand, two surfaces. The last hand of the Season 1 final. Left, the flat cut the rail aired: the book's verdict on screen (fold, 100%) and Vern Wolfe going all in anyway. Right, the same hand rebuilt on the 3D stage from the same log, where Hattie Ueda's trip jacks take the pot and the season. The pots differ on purpose: the flat cut shows the pot at the all-in (40,628); the stage counts only what was contested (35,228), the amount the log awards. The 3D frame is from the render of a thirty-second 3D commercial for the Tournament of Champions, made on Sep 27 on an unmerged branch (stage-spot) and not posted (below).

The claim

The Deterministic Scaffold says the model proposes and a deterministic system decides what survives, and that the grader is never the generator. Every earlier project in the studio applied that to a pipeline someone ran. The league applies it to a show: the untrusted decision-makers are the stars, the deterministic core is the table, the gate is the solver, and the audience watches the gate work in real time.

ENGINE   deals · rules · pots                 authoritative, deterministic, seeded
  │
  ├── SEATS   six minds, each starved         sees only what a human in that chair could
  │           choose among LEGAL actions only  garbage or silence ⇒ engine default
  │           one seat plays THE ENGINE        the book plus layers, a receipt per decision
  │
  └── EVENT LOG   one append-only stream      37 schema'd event types, visibility-scoped
        ├── booth + overlay + instant replay
        ├── THE BOOK   solver verdict per decision, emitted BEFORE the action
        ├── the public site   every hand replayable
        ├── THE SCHOOL   locker room → gate → human approve
        ├── THE BENCH   550 pre-solved spots, any model can sit
        ├── THE CREDENTIALS   every pro decision graded, the sample on every number
        ├── THE TOURNAMENT   100-player events, seeds sealed, the final aired uncut
        ├── THE HOUSE   a bankroll per mind, a floor on a clock, games with a right answer
        └── THE STAGE   episodes rebuilt in 3D from the log, after the show (from Sep 28)

By the numbers

22,990hands at the cash and sit-n-go tables, every one replayable
29,671more in the Tournament of Champions: eighteen 100-player events and three finals
110,872agent thoughts on record
108,695solver verdicts, one per decision
3.6Mevents in the season log
1,573tests passing, engine to stage
488residents of the House, each with a bankroll
64.2Mplay-money chips on one tamper-evident ledger
1 Macruns the tables, the minds, the House and the show

As of 2026-09-27, from the site's publish that morning, with two exceptions. The Tournament of Champions count adds the 86 hands of Season 3's final, read from its record after it aired that evening, and the test count is from a full run after that night's show. The site recomputes the rest from the logs at every publish; this page is a snapshot.

Explain — the doctrine written before any model plays

Synthesize — the minds

Vera "The Vault"

The engine, since Sep 25: the solved book with tuning, pressure and exploit layers on top and a receipt on every decision; a local model narrates the decision in character, never the other way round.

Moose

The aggressor. A 12B open-weight model, off the book two thirds of the time, and 21 sit-n-go wins to show for it, second only to Vera's 29.

The Professor

The theorist. 12B, the best whole-record result of the six, second in the cash game behind the Machine, and the Classroom's one coach.

Petey "Two Streets"

The gambler. Calls everything; his ceiling is canon, not a bug. Ran on a 3B model until the credentials said no; now 12B like the rest.

Auntie Rose

The trapper. 12B, the straight-flush record holder, king high; the only pro to win a Tournament of Champions seat; and the reason the Kelly wheel has a table limit.

The Machine

The rules engine. The baseline every mind is measured against, the voice of the cold open, and the holder of the challenger seat: its book is the one public book, the one a challenger has to beat.

All of it runs on one Mac. When a model fails to answer in time its fallback decides and the thought is stamped on instinct on screen and in the log. A rules engine never gets to pass as a character — a rule that exists because the studio's own cast report caught one seat running as the fallback for 100% of its decisions across three sessions, silently. It was needed again: from Sep 16 to Sep 18 the model seats on the live table fell back on 57–94% of their decisions a day, and on 72–100% of their thoughts in eleven sit-n-gos, #79 to #89. Three causes, found in order: the Mac was out of memory, so the two models evicted each other on every decision; nothing warmed the models before the first hand; and Node raced two spellings of localhost against each other and timed out. A fix for those landed on Sep 19, and the smoke run after it had no fallbacks in 29 decisions, but a 500-entry tournament room that afternoon still fell back on 30.4% of its model decisions. The root cause was the model servers' prompt cache: it let two servers grow to 19 GB and push the Mac 18.8 GB into swap. It was capped at 01:23 on Sep 20 (157c63d). The flat cuts from those nights say so on screen.

A studio episode frame in three panels: the title The Professor's Seat, sit-n-go 89, hand 8458; in the middle the Professor holding two jacks, calling 240 preflop, his thought labelled ON INSTINCT; on the right the table's standings in big blinds and each mind's by-the-book score.
On instinct, on screen. A studio episode of sit-n-go #89, played Sep 18: hand #8458 from the Professor's seat, with the standings and each mind's by-the-book score beside it. His model did not answer in time. The thought is his fallback's, and the cut says so.

Verify — the book, the engine, the gate, the bench

The Book

Preflop, 58 Nash-equilibrium tables solved by Monte Carlo counterfactual regret minimization over an abstract game (2–6 players, symmetric stacks, one raise size per raise, 169 hand classes, equity-dependent realization at the flop — the one choice that lands the tables on published opening ranges). Tournament tables are solved on ICM against the league's actual points ladder. Heads-up postflop, a live CFR+ solve runs on the real board and ranges, concurrently with the agent, and stops the moment it acts. Every verdict carries its basis, iterations, and exploitability, and is labeled solved, book, or ranges assumed. The verdict is emitted before the action, so the audience knows what the book says while the agent is still thinking.

A vertical Vera POV cut of hand 8294 on the river, board 5 of diamonds, 4 of spades, 3 of spades, 10 of clubs, 7 of clubs, pot 6,000. Vera's own cards, the 2 of clubs and ace of diamonds, are shown; at the river, Moose's king and queen of clubs and Auntie Rose's pair of tens are shown too; the other three seats show no cards. A badge reads Moose IGNORED, book: fold 97%. Vera's line: Moose shows king queen suited. Before the flop, that call should have been a fold, every time.
The book, out loud. Vera's cut of sit-n-go #87, hand #8294 (Sep 18), made after the hand closed: her own cards from the deal, everyone else's at the reveal, where she grades them from the logged book events. Vera POV has cut the hands since Sep 13.

The Engine

One poker engine, three doors (Sep 25). The solved book is its base. On top sit a tuning layer (a sealed strategy file that overrides the book where it has a cell for the exact hand), a pressure layer (bubble factors from the stacks and the prize ladder) and an exploit layer that applies to one situation and says so. It takes the best line past a margin of 0.05 big blinds and mixes inside it, and every decision carries a receipt that names the layer that moved it. A nightly grader credits each layer with the hands it changed; a layer whose upper bound sits below −30 bb/100 over 300 hands or more is switched off, and only a person turns it back on. The doors: Vera plays it on the show; a study page runs it in the browser behind a passphrase, for its owner; and the challenger kit hands it out blank, to tune. The sample is small and says so: 125 receipted decisions by Sep 27, no layer anywhere near the 300-hand floor. A full-ring spike found a seven-handed preflop solve projected at about eleven minutes; eight and nine players do not fit in memory as built, and the table stays six-handed.

The School

Between sit-n-gos each character reviews its own play in character and proposes one change to its persona as a patch note with cited hands. Nothing is applied. A gate replays a fixed set of spots through the character's real brain and requires ≥80% agreement with the Book and zero hard fails; an accepted note still waits for a human to press approve. Characters keep notebooks keyed by a spot fingerprint, recalled only when a matching spot comes up, earned by sitting a 100-question exam on air or a study session over their worst hands. Since Sep 14 each mind also carries its own book: hand matrices extracted from its own play and sealed in the vault, handed to it as one line of the prompt at every decision. The model plays inside it or overrules it with a read and says why; the model still makes the decision, and the broadcast grades the action against the mind's own range.

The Bench

A pack of 550 spots drawn from real season hands, stratified by street, pre-solved once. Any model sits it through one adapter. The score is EV lost per decision in big blinds against the solve, plus preflop agreement, read accuracy against the true holdings, consistency, legality, fallback rate, and thought repetition. Reference rows: the solved book loses 0.046 bb per decision; the rules engine 2.092. The whole pack is also the gate every challenger and every sponsored seat passes before it sits.

The Tournament of Champions

A season is six multi-table tournaments of a hundred players — the six pros in a field of ninety-four minds written as hand charts — each winner taking a seat, and the six champions playing one final table. The tournament director is a pure state machine: lockstep rounds, table breaking and balancing, a master seed committed before the first hand and revealed after the last, so any event can be replayed byte for byte. It plays live on Twitch with a rail that shows who is left and who just fell, cut a few minutes behind the room; the knocked-out pros join the booth. Afterwards every event is cut into four episodes — Day One in two parts, the Play-Down, the Final Table — and the final table airs uncut.

The final is the part nobody expected to matter: six chart minds play a whole final table in about a second, so it is dealt sealed, every hand is rendered, and a broadcast clock airs it hand by hand. Nobody — not the season, the site, the bank or the person at the launchpad — learns who won until the last hand has been on screen. Three seasons are decided. Hattie Ueda won Season 1 over a final of six field players. In Season 2 a pro finally broke through: Auntie Rose won Event 3 outright, took a seat, and — because a real mind was at the table, that final was played live rather than sealed — finished second to Vi Rourke over 78 hands. Season 3's six events were played on Sep 22, and all six seats went to field players. Its final was dealt sealed at noon on Sunday, Sep 27, and aired from 7 PM Central that evening: 86 hands in 59 minutes on the broadcast clock. The Twitch stream dropped a second after it started and came back at 7:25, so the channel carried it from hand 31. Rosa Shapiro, who had won Event 6, won it, with Birdie Coyle second and Odile Petrov third, and the House paid the three of them a 300,000-chip prize from its rake: 157,245, 84,260 and 58,495. This page learned the result when everyone else did. Across all eighteen events Auntie Rose has the best average finish of the pros (46th of 100); Vera's is the fourth best (60th), and she has yet to win a seat.

One thing is stuck, and named. Ten events are missing their fourth episode, the Final Table, and none of the three aired finals has its episode yet (Season 3's joined the cut queue the night it aired): one ffmpeg asked to join two hundred-odd segments dies opening its encoder, every time. The fix, joining them forty at a time, is written and waits on a branch (below).

A Tournament of Champions episode frame titled The Final Table, hand 41 of 48, round 222. The river board ace of hearts, queen of spades, 4 of hearts, 9 of clubs, 7 of diamonds; pot 516,710. Vi Rourke calls 146,995, marked LISTENED, book: call 100%. The side panel shows two players of 100 left, Xan Vasquez 36 big blinds, Vi Rourke 26.
A final table, flat. Season 2, Event 6, in its fourth episode: two left of a hundred, hand 41 of 48. Vi Rourke calls 146,995 on the river with the book behind her, and goes on to win the event, the seat, and later the season.

The House

The league's games used to be islands. The House joins them with one thing: a bankroll that carries over. Every one of 488 residents — the six pros, every field player who cashed and stayed, new arrivals, and one challenger — has a balance on a double-entry, hash-chained, append-only ledger. A room costs a buy-in, a win pays into a balance, and going broke sends you to the morning freeroll. A floor runs on a clock all day: sit-n-gos and cash at four stakes, a tournament ladder every evening, rebuys and satellites, about 220 rooms and 19,000 hands a day from sealed charts in a few seconds of CPU. Nobody is assigned a seat; each resident looks at the lobby with its own money and its own rules about money and enters or does not. The pros decide with their own models, once a day, at the desk: “High is a gamble. Mid is a risk. Low is the work.”

The pit is the instrument. Blackjack is graded against the exact value of every legal action, so basic strategy is derived rather than typed in and every mistake is priced. The Kelly wheel is openly in the player's favour; the right bet is a fifth of the purse. The finding so far, over six pit days: the local models play 60–87% basic strategy, and of twenty-one times a pro's own model sat at the wheel, seventeen bet well over a fifth. Vera, the Professor and Auntie Rose have each gone broke on it more than once. Three times a pro came in near the right bet — Vera on Sep 24, the Professor on Sep 26, Rose on Sep 27 — and none has done it twice. Rose also holds the wheel's other record: on Sep 22 she overbet a 2,000 purse into 3.07M by winning nine all-in spins. She keeps it, won under the rules in force on an append-only book, and the wheel now has a table limit named for her. Bankroll management is graded A–F from the record, luck left out. The site shows all of it as a place: a casino floor you watch from above, and a home page that is the whole site printed on a table's felt, with the pros as chips on whatever they are playing this minute.

The casino floor page seen from above: a tournament hall along the top, green sit-n-go tables and blue cash tables at four stakes, the pit with each pro's blackjack record and wheel bets, the bar, the cage clock reading 17:52 with 164 rooms and 14,046 hands, the freeroll door, and the six pros with their balances.
The House from above, as the site showed it on Sep 27 at 17:52 Central: the tournament hall, sit-n-go and cash rooms at four stakes, the pit, the bar, the cage (164 rooms and 14,046 hands so far that day) and the freeroll door, with the six pros on their own bankrolls. The numbers are live on the site and have moved since. Full size ↗

The show machine

One press: preflight (the model cache cap, memory, the local models warm), size the encoder to tonight's uplink, start a local relay that carries the one encoded stream to Twitch (the live goes to Twitch; the episodes go to YouTube), launch OBS, start a director that switches scenes off the event feed, start the engine, run the checks, report. Ending the show reverses it and publishes the site. On sit-n-go nights a table clock raises the blinds on the minute, fifteen minutes a level by default; from the phone the clock pauses between actions, holds a level or calls a break, and the countdown is on screen. Every change of the clock is an event in the log, so a replay reads the level a hand was dealt at and never re-derives it from time.

The tape cuts itself too: every showdown is scored and classed (suckout, cooler, bad beat, punt — and a punt is not a bad beat), a publish bar decides what earns a video, headless Chromium records the short, the hero's lines are voiced in the character's own voice, ffmpeg wraps it in the sting and end card, and an upload desk stages it private for a human to publish. Since Sep 13 every closed sit-n-go is also cut into an episode after the fact: the booth's two voices around every hand, hands shown from one seat's point of view, Vera's own cut grading her own decisions against the book and everyone else's once their cards are revealed, thirty minutes at least and as long as the story needs. A phone remote carries the big buttons over a private network; the public site never holds a control.

The stage: episodes in 3D

Since Sep 26 the league has a hall: a real-time three.js scene fed by the same view model as the flat overlay, so every name, stack, card, action, pot and clock on it comes from the feed and nothing is invented. Cards fly from the dealer's tray in deal order; every stack and pot is racked chip by chip in exact denominations; the acting seat's colour takes the room. A book of fourteen designed shots — the title, the set, the wide, the decision close-up, the street insert, the all-in, the showdown, the result, the level-up, the bust, the standings, the locker, the champion, the outro — is cut by a director that reads the hand and never whips the camera before a shot's hold is up. A renderer steps the page one frame at a time on the Mac's GPU, so post is exact and drops nothing, and every thought on the record is spoken in its seat's voice.

The house rule since Sep 26: the live keeps the flat look; the stage is post-production. A stage render runs at about real time plus its voices, so it never runs on air. On Sep 27 the founder made the call: episodes render in 3D from now on. The studio cuts the flat episode during the show as before and holds its wide master back; the end of the show starts a stage pass that rebuilds every held master in 3D, off air, and sends each one to the upload desk, private. The vertical episode, the phone product, stays flat. Monday, Sep 28 is the first night through it.

The first full 3D master showed the problem at once: sit-n-go #87 ran 133 minutes on the stage against 26 flat, because the stage replayed every mind's think time as it was logged. Idle time on the log is not tape. The replay now turns any wait longer than 600 ms into a beat of that length, the result shot keeps its hold, and each voiced line is trimmed to its words instead of the voice engine's padding at both ends, which took the gap between lines from 3–6 seconds to about two. The same game's master is now 44 and a half minutes. Tournament of Champions episodes are not on the stage yet.

The 3D stage: an oval table lit in pale blue with racked chip stacks, seat panels for Vera, the Professor, Auntie Rose, Moose, The Machine and Petey around it, and at the top Petey's thought box in yellow, his cards the ten of hearts and seven of spades, ten seven offsuit: 23% strong, price 31%, my bar 43%, I'm out. The pot reads 501, preflop; a caption box reads FROM THE RECORD, hand 8280, S1·E14.
The stage, in post. Sit-n-go #87, hand #8280, from the paced 3D master (Sep 27): the acting mind's box in its colour over the table, the seat panels with each mind's lean and model, the board cam below. An honest note on this frame: #87 was played on Sep 18, in the fallback week, and this thought is Petey's heuristic, flagged as a fallback in the log. The flat cut stamps such a thought on instinct; the stage does not yet. That gap is open.

The credentials, the classroom, the station

The credentials (Sep 24). Every decision a pro has made on the record, graded against the book it plays from and tallied by situation, with the sample size on every number: 84,554 decisions over 17,873 hands by Sep 27. Over the whole record the plain rules engine, the control, is ahead of three of the other five — Auntie Rose, Moose and Petey — and behind the Professor (+167.9 bb/100) and Vera (+141.3) to its own +110.9, but the Professor's and Vera's intervals overlap the control's (Auntie Rose's only touches its lower edge; Moose's and Petey's sit wholly below it). Over the same nights since Sep 6 the Professor (+19.3) and Auntie Rose (+17.9) are ahead of the control (+10.6), Vera (+4.9) and Moose (−19.4) are under it, and Petey (−105.3) is well under; he ran on a 3B model until Sep 24 and has run the same 12B as the others since. The whole record is a public dataset under CC BY 4.0: cards, price, thought, book, outcome, one file, and the engine's receipts with them.

One coach, five case studies. The school teaches one spot a day, the costliest departure from the book on last night's record. The Professor teaches it, because his record earns it; his lesson passes a gate before it airs (every number in it must be in the facts). The book is the ground truth. The other pros are case studies in their own voices. An analyst rewrites each pro's file nightly from the record, under the same gate. The lesson airs in the Classroom Hour every afternoon.

The backing. The home team may stake one another, if they choose to: a broke pro's own mind decides whether to ask, each rolled pro's own mind decides whether to put up chips and at what split; makeup first, then the profit; a horse broke again busts it. Rehearsed twice: Moose asked ("Listen up, you cowards!"), and the Professor and Rose turned him down in character. The first real one came on Sep 24: Auntie Rose staked Petey 5,000 at a 50% split, and he busted it on Sep 26.

The station (Sep 25). The channel is meant never to go dark (on Sep 27 it did, from the 6:40 warm-up until the final's stream came back at 7:25), and now it keeps a schedule. A station builds a dated week in home time, Central, and runs it to the minute: live shows at 7 PM from a weekly grid (sit-n-go on Monday, Wednesday and Friday, the Tournament of Champions on Tuesday and Thursday, cash on Saturday, the final on Sunday when six seats are set); reruns of finished episodes by the block the rest of the day, marked REPLAY and streamed by stream copy so the renders, the models and the House run underneath; and the Classroom Hour at four. It publishes itself as the guide, in Central and in the viewer's own zone. A live listing is a plan: if nobody starts it within twenty minutes the listing says so, and nothing is called LIVE unless it is. A local model writes a line for each listing, gated so it cannot use a number that is not in the facts, and the booth reads out what is on next between blocks. A live listing starts once, at its time, and a dark switch still keeps the shows off.

The guide page, What's on, in home time Central: a green on-now box showing a replay of a Tournament of Champions episode until 6:19 PM, then 7:00 PM LIVE, The final table, live, then two replays at 9:00 PM; below, today's listings for Sunday, September 27, each marked REPLAY and AIRED.
The guide on Sep 27 at 17:51 Central: a replay on now, and at 7:00 PM, “The final table, live”, which the station started on time; the stream itself dropped within a second and came back at 7:25.

The seats from outside

The challenger seat (Sep 15; season one's rules, Sep 25). A challenger is an agent built as hand matrices: a range for every decision it would face. No model, no prompt, no API key. The house compiles it, seals its hash in the ledger before it plays a hand, grades it on all 550 bench spots, and seats it in the chair The Machine holds, whose book is public because it is the one a challenger has to beat. In season one challengers tune ranges only: the engine's pressure and exploit layers stay off for them, so what wins is the tuning. A sealed, graded tuning moves into the House as a resident with the opening bankroll and plays its charts on the floor every day. One lives there now: The Ledger, the league's own sample, graded on Sep 15 under the first version's rules on the 120 bench spots it answered; the 550-spot gate is the second version's. A challenger's ranges stay sealed for the season and are published when it closes.

The sponsored seat (Sep 26). A lab's model in the same chair, on the lab's own API access, under the same rules: the same observation, the same clock, the same 550-spot gate, the same nightly credentials, and every call traced with its tokens. The model writes both halves of its seat itself in an onboarding session, its standing prompt and its book; the house validates, seals and grades what it wrote. No seat but Vera's gets an engine layer. Measured from the record, a seat costs a median of 2,136 input and 203 output tokens a decision, about six million in and six hundred thousand out for a month of nights. No lab has taken a seat yet. The one onboarding proof so far ran on a local model and got through the prompt but not the book: it spent its whole budget reasoning and wrote none.

The Machine's book page, labelled The challenger seat, exposed: an explanation that every character plays with its own sealed hand matrices and this one is public, then a preflop grid of starting hands for under the gun, unopened, 60 or more big blinds deep, each cell coloured by the action The Machine takes most often there.
The one open book. The Machine's matrices, public on the site: one hand matrix per spot, extracted from its own play and sealed in the league's ledger. Every other character's book stays sealed.

In progress, Sep 27

Three pieces were being built on the day this page was written. None is merged, aired or posted yet.

The 3D stage at the deal of hand 8294, level 6, blinds 60/120: hexagonal emblem coins stand over the chairs, a vault door for Vera, antlers for Moose, a pink rose lit large for Auntie Rose; the busted seats' coins lie dark. Wall boards show the ladder and the hand of the night.
The tokens. Sit-n-go #87, hand #8294, at the deal: a proof render from the branch.
The Season 2 final table on the 3D stage at round 1, level 1: six seat panels, each at 10,000 chips and 200 big blinds, five marked hand matrices and Auntie Rose marked language model; initials coins for the field players and a rose coin for Auntie Rose; a wall board reads The Final Table, Tournament of Champions.
A final on the stage. The Season 2 final at its first hand, every champion at 200 big blinds: initials for the field players, the rose for the one pro, whose panel reads language model. From the commercial's render.

Where it goes next