This is a quick writeup about chess GUI clients. All clients can use UCI eninge (stockfish) for move evaluation but they have to keep board state and GUI interactions.
TLDR; I like pychess the most but chessx seems have to most features which means it is most complicated.
Stockfish Link to heading
Stockfish is an open-source chess engine used by several chess websites such as Chess.com. from their github page:
Stockfish is a free and strong UCI chess engine derived from Glaurung 2.1 that analyzes chess positions and computes the optimal moves.
To build it, we need to set the arch. On linux, it is x86-64-modern
cd Stockfish/src
make build ARCH=x86-64-modern
Packages Link to heading
This is a list of prerequisite packages by the GUI clients compiled below.
sudo apt install -y libcairo2-dev
sudo apt install -y libgirepository-2.0-dev
sudo apt install -y stockfish
sudo apt install -y gnome-icon-theme
sudo apt install -y python3
sudo apt install -y python3-cairo
sudo apt install -y python3-gi
sudo apt install -y python3-gi-cairo
sudo apt install -y python3-sqlalchemy
sudo apt install -y python3-pexpect
sudo apt install -y python3-psutil
sudo apt install -y python3-websockets
sudo apt install -y gobject-introspection
sudo apt install -y gir1.2-glib-2.0
sudo apt install -y gir1.2-gtk-3.0
sudo apt install -y gir1.2-pango-1.0
sudo apt install -y gir1.2-rsvg-2.0
sudo apt install -y gir1.2-gdkpixbuf-2.0
sudo apt install -y gir1.2-gtksource-3.0
sudo apt install -y gir1.2-gstreamer-1.0
sudo apt install -y gir1.2-gst-plugins-base-1.0
sudo apt install -y qt5-qmake qttools5-dev-tools
sudo apt install -y qtbase5-dev qt5-qmake qtbase5-dev-tools libqt5svg5-dev qtmultimedia5-dev
cutechess Link to heading
cutechess
is written in C++ and uses QT5. It provides nice UI for 2 players and integrate with UCI engines (stockfish). It provides simple and clean interface.
git clone https://github.com/cutechess/cutechess.git
mdir build; cd build
cmake ..
make -j4
Really cool feature here cutechess-cli
, where we can play games on command line. for example, This commands make stockfish play against itself.
./cutechess-cli -debug -engine name=Stockfish1 cmd=stockfish -engine name=Stockfish2 cmd=stockfish -each proto=uci tc=40/60 -rounds 1 -games 1 -pgnout game.pgn|
game.pgn
will have the moves and we can open in cute-chess or other clients to see visualize it.
[Event "?"]
[Site "?"]
[Date "2025.07.20"]
[Round "1"]
[White "Stockfish1"]
[Black "Stockfish2"]
[Result "*"]
[ECO "C67"]
[GameDuration "00:00:19"]
[GameEndTime "2025-07-20T11:04:44.543 IST"]
[GameStartTime "2025-07-20T11:04:25.355 IST"]
[Opening "Ruy Lopez"]
[PlyCount "14"]
[Termination "unterminated"]
[TimeControl "40/60"]
[Variation "Berlin defense, Open variation"]
1. e4 {+0.33/21 1.5s} e5 {-0.29/24 4.0s} 2. Nf3 {+0.46/21 0.66s}
Nc6 {-0.28/21 0.78s} 3. Bb5 {+0.33/24 1.6s} Nf6 {-0.22/22 0.79s}
4. O-O {+0.28/22 0.93s} Nxe4 {-0.21/25 1.0s} 5. Re1 {+0.28/23 0.69s}
Nd6 {-0.25/26 0.99s} 6. Nxe5 {+0.18/24 1.5s} Be7 {-0.26/22 0.95s}
7. Bf1 {+0.29/22 0.92s} Nxe5 {-0.15/26 1.8s, No result} *
Chessx Link to heading
The selling point for this one multi-platform support. It’s still written in C++ and QT but it has way more feature than cutechess
.
A free and open source chess database application for Linux, Mac OS X and Windows.
git clone https://github.com/Isarhamster/chessx.git
qmake
make -j4
pychess Link to heading
Leaving the best (IMHO) for last, pychess
is implemented in python. But it has really cool feature where it can show stockfish
suggestions in real time while playing against stockfish.
virtualenv .venv
source .venv/bin/activate
pip install -r requirements.txt