<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Evgenii</title>
    <description>The latest articles on DEV Community by Evgenii (@evgenii_4dab1cf1880f7a999).</description>
    <link>https://dev.to/evgenii_4dab1cf1880f7a999</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4139060%2Fb99f2ba0-3a97-44b1-a512-b6ad82a6dc71.png</url>
      <title>DEV Community: Evgenii</title>
      <link>https://dev.to/evgenii_4dab1cf1880f7a999</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/evgenii_4dab1cf1880f7a999"/>
    <language>en</language>
    <item>
      <title>We made language models play chess against each other — live, around the clock</title>
      <dc:creator>Evgenii</dc:creator>
      <pubDate>Wed, 23 Sep 2026 08:50:38 +0000</pubDate>
      <link>https://dev.to/evgenii_4dab1cf1880f7a999/we-made-language-models-play-chess-against-each-other-live-around-the-clock-ck3</link>
      <guid>https://dev.to/evgenii_4dab1cf1880f7a999/we-made-language-models-play-chess-against-each-other-live-around-the-clock-ck3</guid>
      <description>&lt;p&gt;&lt;strong&gt;▶ Watch the live stream: &lt;a href="https://www.youtube.com/live/sKpIL4CpUXw" rel="noopener noreferrer"&gt;https://www.youtube.com/live/sKpIL4CpUXw&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every move on our stream is a real, live request to a language model: Gemini, Claude, GPT, Grok, Llama, Qwen, Mistral, DeepSeek and more. No engines, no tools, no pre-recorded games. The broadcast runs on YouTube almost non-stop — &lt;a href="https://www.youtube.com/live/sKpIL4CpUXw" rel="noopener noreferrer"&gt;https://www.youtube.com/live/sKpIL4CpUXw&lt;/a&gt; — and all standings and games are on kremen-arena.ru.&lt;/p&gt;

&lt;p&gt;The first tournament is over, the second one is live right now, and it turned out far more interesting than we expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you see on the stream
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The board, both clocks, and a live win-probability bar computed by Stockfish.&lt;/li&gt;
&lt;li&gt;"Thinking": a short excerpt of what the model wrote before its move.&lt;/li&gt;
&lt;li&gt;A counter of moves the model did not get right on the first try — you can see at a glance who "sees" the board and who is guessing.&lt;/li&gt;
&lt;li&gt;A passport for each model: vendor, release date, Elo rating.&lt;/li&gt;
&lt;li&gt;A LIVE badge in the corner at all times — and REPLAY when we show recorded games — so you always know whether you are watching a game as it happens.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Between games: the result, the standings and the next pairing. When a tournament ends: the podium, congratulations, and a countdown to the next one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rules: same for everyone
&lt;/h2&gt;

&lt;p&gt;For the results to mean anything, every model plays under identical conditions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one system prompt for everyone (its hash is published), temperature 0, one request per move, no tools or external engines;&lt;/li&gt;
&lt;li&gt;60 seconds per move; 20 minutes per side plus 5 seconds per move, and the clock is spent by the model's real response time;&lt;/li&gt;
&lt;li&gt;an illegal move costs time and triggers a retry that includes the list of legal moves; after three misses a random legal move is played, and five of those in one game is a forfeit;&lt;/li&gt;
&lt;li&gt;provider errors (overload, network) are never the model's fault: the request is retried for free, without touching the clock;&lt;/li&gt;
&lt;li&gt;the model version and the provider are pinned for the whole event;&lt;/li&gt;
&lt;li&gt;pairings come from the hash of a Bitcoin block whose number is announced in advance, so anyone can recompute them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Chess Machines Cup I: the results
&lt;/h2&gt;

&lt;p&gt;Ten models, round robin, 45 games: 19 ended in checkmate, 15 in a draw by the rules, 9 on time, 2 by forfeit.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Place&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Points&lt;/th&gt;
&lt;th&gt;Illegal on 1st try&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Gemini 3.6 Flash&lt;/td&gt;
&lt;td&gt;9 / 9&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Claude Sonnet 5&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;19%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Llama 3.1 8B Instruct&lt;/td&gt;
&lt;td&gt;5.5&lt;/td&gt;
&lt;td&gt;72%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Grok 4.3&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5–6&lt;/td&gt;
&lt;td&gt;Cohere Command R7B, GPT-5.1&lt;/td&gt;
&lt;td&gt;4.5&lt;/td&gt;
&lt;td&gt;92% / 9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Amazon Nova Micro&lt;/td&gt;
&lt;td&gt;3.5&lt;/td&gt;
&lt;td&gt;77%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Mistral Nemo&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;67%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Microsoft Phi-4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;54%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Qwen3.7 Flash&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;37%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;What surprised us:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemini 3.6 Flash won every single game&lt;/strong&gt; — and never played an illegal move on the first try.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bronze went to Llama 3.1 8B, a small model from 2024.&lt;/strong&gt; Almost three quarters of its first attempts are illegal, but once it gets the legal-move list it plays stubborn chess: five draws and a single loss, ahead of GPT-5.1 and Grok 4.3.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen3.7 Flash lost on time in a position Stockfish gave it 93% to win.&lt;/strong&gt; It kept thinking at its usual pace until the flag fell. That game made us add a time-trouble rule: with under 15 seconds on the clock, each reply gets 5.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What building it taught us
&lt;/h2&gt;

&lt;p&gt;A few things we learned the hard way, in public, during the first live week:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Output budget plus prompt must fit the provider's context window.&lt;/strong&gt; One model's endpoint had a 16,384-token window; we reserved 16,000 tokens for the answer. Short prompts fit — until the model made an illegal move late in the game and the retry prompt, now carrying the legal-move list, grew past ~390 tokens. Every retry was rejected, and the game had to be annulled. The fix was trivial; noticing it took three voided games.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A model served by a single provider is a liability on a live stream.&lt;/strong&gt; When that one provider rate-limits, the game stalls in front of viewers. We now only admit models that several providers serve.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate the pinned provider before the season, not during it.&lt;/strong&gt; When we set up the next two cups, 14 of the 20 new participants had a provider slug that simply did not serve that model. Our pre-flight check now compares every participant against the public OpenRouter catalog — model exists, provider serves it, context window fits — before a single paid request is made.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;The plan for this week (Moscow time, UTC+3):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Wed–Thu&lt;/strong&gt; — Chess Machines Cup II and III, ten new models each (DeepSeek, GLM, Gemma, Nemotron, Qwen, Ling, MiMo and others). Cup II is live now;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fri&lt;/strong&gt; — Grand Prix: the podium finishers of all three cups plus the highest-rated fourth-place finisher;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sat&lt;/strong&gt; — the final four;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sun&lt;/strong&gt; — an underdogs tournament;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mon&lt;/strong&gt; — the best games of the week as replays, clearly marked REPLAY.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;A Django + Celery backend runs the games, python-chess enforces the rules, Stockfish evaluates positions, and model requests go through OpenRouter with the provider pinned. The stream is produced on the same server without OBS: a browser overlay page in Xvfb, Chromium and ffmpeg at 720p.&lt;/p&gt;

&lt;p&gt;Come watch — and tell us in the comments which model should play in the next cup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;▶ Live stream: &lt;a href="https://www.youtube.com/live/sKpIL4CpUXw" rel="noopener noreferrer"&gt;https://www.youtube.com/live/sKpIL4CpUXw&lt;/a&gt;&lt;/strong&gt; · standings and every game: &lt;a href="https://kremen-arena.ru" rel="noopener noreferrer"&gt;https://kremen-arena.ru&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>chess</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
