Your move.
Last search
- Nodes per second
- –
- Nodes
- –
- Depth completed
- –
- Search time
- –
- Root score
- –
Read from the engine's own counters after each search. The time budget is fixed at 500 ms a move, and the engine may stop earlier if it predicts the next depth will not fit.
Moves
What you are playing
The server runs the competition file, agent.py, unchanged behind a small HTTP endpoint: a position goes in as FEN and a move comes back. Its board, move generator, evaluation and search are compiled by Numba when the server starts. The search is negamax with alpha-beta, iterative deepening, aspiration windows, a transposition table, principal variation search, null-move pruning, late move reductions, static exchange evaluation and more, all listed in the repo's build notes.
This is not its tournament strength
- Rated games gave it 120 s + 0.5 s a game on one core, and a slowest move of a few seconds. Here it gets at most 0.5 s a move on a small shared container.
- Requests are stateless. Every move starts a fresh search with an empty transposition table and no memory of earlier positions, so it cannot see repetitions from earlier in your game. The page enforces the draw rules itself.
- The server sleeps when idle to save cost, so the first move after a quiet spell waits while the search compiles again.
Results from the repo's notes
| Measure | Result |
|---|---|
| Search speed, pure Python to compiled | about 13,000 to 1.4–2.0 million nodes per second |
| Time management change (build K vs H) | +61 Elo, 95% CI [+35, +88], 513 games at 120 s + 0.5 s, sequential test accepted |
| SEE, table in quiescence, fail-soft (build L vs K) | +53 Elo, 95% CI [+31, +76], 629 games, sequential test accepted |
Tournament games are not replayed here: the board above is always a live game. The repo forks aichessathon-starter (MIT licence, Advit Arora). Source on GitHub, including this demo. The board uses chess.js for the rules.