fastchess-gui: a light GUI for engine testing and tournaments, built on fastchess

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

j_romang
Posts: 124
Joined: Mon May 16, 2011 2:52 am

fastchess-gui: a light GUI for engine testing and tournaments, built on fastchess

Post by j_romang »

Hello everyone,

I would like to introduce fastchess-gui, a free and open source (MIT) desktop GUI for engine testing, built on fastchess. It does two jobs: telling whether a new version of an engine is stronger than the last one (pick two engines, start an SPRT, follow Elo and LLR as the games come in), and running engine tournaments that resume exactly after any interruption, can be changed while they run and can be broadcast live.

Image
A round robin in progress: every game of the round, and the one followed with the engines' searches, moves and evaluation curve (click for full size).

Why

Many testers still run their tournaments with ChessGUI, which is no longer developed, and many developers run their SPRT tests from the command line. fastchess-gui is meant to serve both, in the spirit of ChessGUI: light, simple, made for long unattended runs, with more features on top. Its goal is to be a tool for testers and engine authors.
David Rabel used the earlier versions to test GaiaChess, and it has grown a lot since.

It is also my small way of saying thank you: seeing one's own engine in the rating lists is a real pleasure, and it only exists thanks to the hours of CPU and the work testers put into it.

Built on fastchess

fastchess-gui is only a layer on top of fastchess: the heavy lifting (running the engines, time control, adjudication, crash recovery, statistics, SPRT) is done by fastchess itself, running inside the GUI, with no command line parsing and no log scraping. The games, the statistics and the SPRT are exactly those of the command line tool, which the same download also contains. A big thank you to its authors and maintainers, Disservin, Szil and PGG106, to gahtan-syarif and to all its contributors: fastchess-gui would not exist without their work.

Light

Less than 7 MB to download, for Windows 10+ and Linux: one executable (plus the fastchess command line tool), no installer, nothing else to install, no runtime. It starts instantly and leaves the CPU to the engines.

Features

Testing a new version
  • SPRT matches with fishtest's statistics: Elo, nElo, LOS, pentanomial results, LLR, and a Statistics section with BayesElo, DrawElo, variance ratio and the RMS bias of the openings. Charts of Elo, nElo and LLR over the games, game length, how games ended.
  • SPRT calculator, as fishtest's: the chance a test passes and the expected number of games against the true Elo difference. The setup tells how long its bounds are likely to take.
  • "Relaunch with..." the next version of an engine against the same opponent, every other setting kept; templates; a queue of tests.
  • Test suites (STS, WAC, ERET...): several engines on an EPD file (bm, am, STS points), as a grid with the time to solution, the totals and the STS score, kept to compare versions.
Tournaments
  • Formats: round robin (Berger tables, any number of cycles), gauntlet, Swiss, knockout, and the two-engine match (fixed games, until stopped, or SPRT).
  • Exact resume: every tournament is a folder with a journal. After a crash, a closed window or a power cut it continues where it stopped, with no game lost or played twice.
  • Change a tournament while it runs: add, withdraw or replace an engine, change the number of cycles, replay or void games, with the impact shown before applying.
  • Standings: crosstable, maximum likelihood ratings with error bars and an anchor (like Ordo), Sonneborn-Berger or Buchholz, copy as text or BBCode for a forum post, HTML export.
  • Time controls: base + increment, moves per period, time per move, fixed nodes or depth, time odds; per engine Hash and Threads, or common settings forced on every engine.
  • Chess960, Syzygy adjudication, draw / resign / max moves adjudication, CPU affinity.
Engines
  • UCI and WinBoard engines (protocol 1 and 2, natively).
  • Imports the engine lists of ChessGUI (ChsGUI_Eng.TXT with its options), cutechess, Banksia and Arena, or every engine of a folder.
  • A check of each engine (fastchess' UCI compliance steps) and a quick test of 10 games; a missing or rebuilt program is noticed.
  • Fair play: the processor time of every engine is measured, with a warning when one uses more cores than its threads or thinks on its opponent's time.
  • Wrong PVs marked on their moves, engine logs kept for the games lost on time, by a crash or an illegal move, win/draw/loss shares (UCI_ShowWDL).
Openings and games
  • A library of books (EPD, PGN, Polyglot), each checked for illegal positions, duplicates, colour-reversed positions and games already over, browsed on a board and saved cleaned.
  • Results by opening: the openings that favour a colour, those always drawn, those that tell the engines apart, exported as EPD.
  • Every game with its ECO opening, replayed with its evaluation curve and charts move by move (time and decision time, depth, nodes, speed, PV agreement); filters for the interesting games (evaluation swings, disagreements, games lost from a winning score).
  • Two PGN files per tournament (cutechess style, and ChessBase / Lichess style comments), with the engines' Elo in the tags.
Ratings and broadcast
  • A rating list over every game of every tournament, by time control, group or period, with imported PGN files (CCRL, CEGT...), engine cards, head to head records and the progress of an engine's versions; export for Ordo and BayesElo.
  • Broadcast: a TLCS server (for TLCV and node-tlcv / ccrl.live), lichess broadcasts, live PGN + HTML standings + JSON files to upload anywhere, and a built-in web page.
  • A headless mode for servers: fastchess-gui --run FOLDER, which can broadcast too.
Light and dark themes, an interface size from 80 to 250 %, pages that use the whole window; English, French and German.

Image
A two-engine SPRT match: Elo and LLR over the games, pairs, game length, how games ended, search per engine.

Image
A round robin's overview: standings, ratings with their 95 % intervals, progress, processor use, latest results.

Image
The finished games, with their openings, replay, wrong PVs marked and evaluation curve.

Download

Windows and Linux binaries, sources and the user guide on GitHub: https://github.com/jromang/fastchess-gui
Latest release (0.4.2): https://github.com/jromang/fastchess-gui/releases/latest

Known limitations
  • The TLCS server has been tried with node-tlcv, not yet with TLCV itself. If someone can test it, I would be very grateful.
  • The Windows version is tested automatically, but has seen little real use so far.
  • On Wayland, detached boards stay inside the main window.
Feedback welcome

Bug reports and feature requests are very welcome, here in this thread or as GitHub issues.

Thanks for reading, and thanks to everyone who tests engines!

Jean-Francois
Raphexon
Posts: 479
Joined: Sun Mar 17, 2019 12:00 pm
Full name: Henk Drost

Re: fastchess-gui: a light GUI for engine testing and tournaments, built on fastchess

Post by Raphexon »

This is much appreciated!

Will test it when home.
User avatar
AdminX
Posts: 6426
Joined: Mon Mar 13, 2006 2:34 pm
Location: Acworth, GA

Re: fastchess-gui: a light GUI for engine testing and tournaments, built on fastchess

Post by AdminX »

First, Thank You! I am glad there is a Dark Mode.

Thank you again.
"Good decisions come from experience, and experience comes from bad decisions."
__________________________________________________________________
Ted Summers
Damir
Posts: 2973
Joined: Mon Feb 11, 2008 3:53 pm
Location: Denmark
Full name: Damir Desevac

Re: fastchess-gui: a light GUI for engine testing and tournaments, built on fastchess

Post by Damir »

Thank you. We can never run out of Chess GUI, no matter how many there are.
j_romang
Posts: 124
Joined: Mon May 16, 2011 2:52 am

Re: fastchess-gui: a light GUI for engine testing and tournaments, built on fastchess

Post by j_romang »

Damir wrote: ↑Wed Nov 11, 2026 11:45 am Thank you. We can never run out of Chess GUI, no matter how many there are.
Thanks Damir! True, there's always room for one more 🙂 And if something is missing for the way you test engines, just ask.
User avatar
Gabor Szots
Posts: 1630
Joined: Sat Jul 21, 2018 7:43 am
Location: Budapest, Hungary
Full name: Gabor Szots

Re: fastchess-gui: a light GUI for engine testing and tournaments, built on fastchess

Post by Gabor Szots »

I am just running my first fastGUI tournament. My first impressions are very good. I assess it's on par with Myracle and TorsGUI.

Just noticed that the PGN it creates is called 'games', maybe it could be given the name of the tournament?
Gabor Szots
CCRL testing group
User avatar
Gabor Szots
Posts: 1630
Joined: Sat Jul 21, 2018 7:43 am
Location: Budapest, Hungary
Full name: Gabor Szots

Re: fastchess-gui: a light GUI for engine testing and tournaments, built on fastchess

Post by Gabor Szots »

I see you may include new participants in a tournament in progress. Can you also remove participants?
Gabor Szots
CCRL testing group
User avatar
GenoM
Posts: 928
Joined: Wed Mar 08, 2006 9:46 pm
Location: Plovdiv, Bulgaria
Full name: Evgenii Manev

Re: fastchess-gui: a light GUI for engine testing and tournaments, built on fastchess

Post by GenoM »

Gabor Szots wrote: ↑Thu Nov 12, 2026 5:59 pm I see you may include new participants in a tournament in progress. Can you also remove participants?
Yes
In the same dropdown menu there is Remove option
take it easy :)
j_romang
Posts: 124
Joined: Mon May 16, 2011 2:52 am

Re: fastchess-gui: a light GUI for engine testing and tournaments, built on fastchess

Post by j_romang »

Thanks Gabor, glad the first impressions are good, and thanks Evgenii for answering. :D

Yes, participants can be removed while the tournament runs: in the Schedule tab, "Change the tournament" > "Withdraw an engine". Its remaining games are dropped, and you choose whether the games it already played still count. Running games are not interrupted, and "Undo the last change" brings it back if needed.

About the PGN name: since 0.4.13 a new tournament writes its games to "<tournament name>.pgn" (and "<tournament name>-chessbase.pgn") instead of games.pgn. Tournaments created before keep games.pgn.

Version 0.5.0 is out: https://github.com/jromang/fastchess-gu ... tag/v0.5.0

Among the new things:
- opponents picked by rating, with a rating list import to fill the reference Elo;
- a gauntlet table for forum posts, and an export of the games as rating list testers send them, with a checklist;
- the tournament resumes at launch after a crash or a reboot;
- arrows on the live board, one TLCS port per concurrent game, a richer web page;
- a command palette (Ctrl+K);
- fixes: PlyCount of games lost by an illegal move, and PGN books with "%" lines (e.g. AVT) are now read correctly.

Feedback welcome, as always.
User avatar
Gabor Szots
Posts: 1630
Joined: Sat Jul 21, 2018 7:43 am
Location: Budapest, Hungary
Full name: Gabor Szots

Re: fastchess-gui: a light GUI for engine testing and tournaments, built on fastchess

Post by Gabor Szots »

j_romang wrote: ↑Thu Nov 12, 2026 8:01 pm Thanks Gabor, glad the first impressions are good, and thanks Evgenii for answering. :D

Yes, participants can be removed while the tournament runs: in the Schedule tab, "Change the tournament" > "Withdraw an engine". Its remaining games are dropped, and you choose whether the games it already played still count. Running games are not interrupted, and "Undo the last change" brings it back if needed.

About the PGN name: since 0.4.13 a new tournament writes its games to "<tournament name>.pgn" (and "<tournament name>-chessbase.pgn") instead of games.pgn. Tournaments created before keep games.pgn.

Version 0.5.0 is out: https://github.com/jromang/fastchess-gu ... tag/v0.5.0

Among the new things:
- opponents picked by rating, with a rating list import to fill the reference Elo;
- a gauntlet table for forum posts, and an export of the games as rating list testers send them, with a checklist;
- the tournament resumes at launch after a crash or a reboot;
- arrows on the live board, one TLCS port per concurrent game, a richer web page;
- a command palette (Ctrl+K);
- fixes: PlyCount of games lost by an illegal move, and PGN books with "%" lines (e.g. AVT) are now read correctly.

Feedback welcome, as always.
Thanks Jean-Francois for fulfilling my wishes and so quickly to boot.

I have to say I always select opponents manually but some may welcome the possibility of automatic picking.

Unfortunately now there are so many excellent GUI's that not only engine selection but also GUI selection will cause headaches.
Gabor Szots
CCRL testing group