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

Exmaple Image

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

Exmaple Image

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

Exmaple Image