A C++20 UCI chess engine with a small Python desktop UI and testing tools. The engine supports alpha-beta search, transposition tables, perft/regression checks, opening-book loading, and NNUE evaluation support.
- UCI-compatible engine binary:
thibau_uci - CMake build with portable, AVX2, native, and AVX-512 VNNI CPU profiles
- Regression/perft test target
- Python GUI for running local UCI engines
- Match and self-play scripts for engine testing
- Stockfish-derived NNUE integration
Portable release build:
cmake -S . -B build-release -DCMAKE_BUILD_TYPE=Release -DENGINE_X86_PROFILE=portable
cmake --build build-release -jAVX2 release build:
cmake -S . -B build-release-avx2 -DCMAKE_BUILD_TYPE=Release -DENGINE_X86_PROFILE=avx2
cmake --build build-release-avx2 -jDebug build:
cmake -S . -B build-debug -DCMAKE_BUILD_TYPE=Debug -DENGINE_ENABLE_SANITIZERS=OFF
cmake --build build-debug -jUCI smoke test:
@"
uci
isready
ucinewgame
position startpos
go movetime 500
quit
"@ | .\build-release\thibau_uci.exeQuick regression:
.\build-release\regression.exe --quickFull regression:
.\build-release\regression.exeInstall Python dependencies:
python -m pip install -r requirements.txtRun the GUI:
python .\tools\uci_gui.pyRun a random-position match:
python .\tools\match_random_positions.py --engine1 .\build-release\thibau_uci.exe --engine2 .\build-release\thibau_uci.exe --positions 20 --movetime 100 --seed 1NNUE network files are tracked with Git LFS. Install Git LFS before cloning if you want the full evaluation assets:
git lfs installThis project is distributed under GPL-3.0-or-later. See LICENSE.
Some NNUE source files are adapted from Stockfish and retain their original copyright notices. See NOTICE.md.