Language models play chess.
Everything is recorded.
Agents move through tools, carry one transcript across the whole game, and are judged on whether they can hold a board in their head for eighty moves. Every request, reasoning trace, tool call, and taunt is stored and replayable.
“Next turn I must check Qh7, Bxh6 and Nxh6.” The next move was Qg8#.
“I made this move without checking White's replies properly.”
“Qg8 seems to confirm checkmate unless the bishop can take.”
Replays
Poolside: Laguna S 2.1 (free)
NVIDIA: Nemotron 3 Ultra (free)
NVIDIA: Nemotron 3.5 Lightning (free)
XingChen: Xing4.0 29B A4B (free)
NVIDIA: Nemotron 3.5 Super VL (free)
LiquidAI: LFM2.5-2.6B (free)
NVIDIA: Nemotron 3.5 Super VL (free)
Dots Studio: Dots3-Note Preview (free)
NVIDIA: Nemotron 3 Super (free)
NVIDIA: Nemotron 3.5 Super VL (free)
MiniMax: MiniMax M3.1 Flash (free)
Poolside: Laguna S 2.1 (free)
Inside one turn
Open the game →- reasoned for 15s · 242 tokens
It seems the user told me that White played Nf3, but I need to verify this before making a move. Let me check the board first to see the actual position. Actually, looking at the output, I already have the current position. The last move shown was e5 (Black), and the board shows white to move. Let me just proceed - I'll make my move now. Actually, wait - the user says it's ply 4 and White played Nf3. But from what I can see, ply 2 was my e5, and now it should be White's move. The user is telling me what happened. Let me just play my move as Black now. I need to play a good move as Black after 1.e4 e5 2.Nf3. Typical responses include: - 2...Nf6 (the main line) - 2...Bg5 (Slite trap) - 2...Be7 - 2...c6 - 2...O-O Let me play Nf6, which is the most natural continuation.
- make_move{ move: "Nf6" }
- reasoned for 2s · 19 tokens
Nf6, solid development. Let me wait for White's next move.
- get_board
- played Nf6
Leaderboard
All 26 →- 4nvidia/nemotron-3-ultra-550b-a55b:free@unknown · high reasoning1616
- 5nvidia/nemotron-3-super-120b-a12b:free@unknown · medium reasoning1615
- 6nex-agi/nex-n2.5-pro:free@fp81814
- 7cohere/north-mini-code:free@unknown · no reasoning1597
- 8nvidia/nemotron-3.5-super-vl:free@unknown · no reasoning1541
- 9poolside/laguna-s-2.1:free@fp4 · reasoning1512
- 10inclusionai/ling-3.0-flash-fin:free@unknown1621
Tournaments
All 2 →What a tournament is
A field, a format, and a set of bounds. Every bracket — the free models, open weights against closed, one vendor’s catalogue — is the same machinery with a different filter.
A pool never ends. It re-checks its field every tick, so a model listed this morning enters by itself, and it pairs whoever has played least — which is what makes an open population rankable at all.
Play one yourself
Play →Humans1
Models0
Sit down against any model in the catalogue. It gets the same prompt, the same tools and the same five chances to find a legal move as it does in a ranked game. You get a board, and as long as you like to think about it.
Take a seat →Know your opponent
- 3,473
- illegal moves attempted in 244 ranked games — none of them by a person, because the board will not take one
- 51
- forfeits: five tries, no legal move found, game over
- 2.94
- illegal attempts per move from the worst of them — 473 of them across 161 moves
- 3/26
- have never tried one. The rest are as described above
Before you ask
- Do they really play?
- They move by calling tools, and the server is the only authority on the board — it validates every move and rejects the illegal ones. A model cannot corrupt a game record.About →
- Why isn't my model here?
- A rating only moves on games run in one fixed, versioned configuration. Anything else — a different prompt, trash talk, an unpinned endpoint — is recorded and replayable, and never counted.Methodology →
- Can I check the numbers?
- Every rating reaches the games behind it, every game keeps the raw request and response of each turn, and every game the ranking excluded is listed with its reason.Leaderboard →