A UCI-compatible chess engine written in C++17, built from scratch with a focus on correctness and progressive optimization.
Argus is a classical chess engine that uses alpha-beta pruning to search for the best move in a given position. It communicates via the UCI protocol, meaning it plugs directly into any major chess GUI (CuteChess, Arena, etc.) without any extra configuration.
The engine is in early development — the core search and eval are functional, and the architecture is designed to make adding stronger features straightforward.
- UCI protocol — fully implemented, plug into any GUI out of the box
- Alpha-beta search — minimax with alpha-beta pruning
- Material evaluation — centipawn-accurate piece values
- Move ordering — skeleton in place, MVV-LVA coming next
- Legal move generation — via chess-library by Disservin
Argus/
├── lib/
│ └── chess-library/ # Disservin's chess-library (move generation)
├── src/
│ ├── main.cpp
│ ├── engine/
│ │ ├── search.h / search.cpp # Alpha-beta search
│ │ ├── evaluate.h / evaluate.cpp # Position evaluation
│ │ └── movesort.h / movesort.cpp # Move ordering
│ └── uci/
│ └── uci.h / uci.cpp # UCI protocol handler
├── tests/
│ └── perft.cpp # Move generation correctness tests
└── CMakeLists.txt
- GCC 15+ or Clang with C++17 support
- CMake 3.16+
- Ninja (recommended)
On Windows, use the MSYS2 UCRT64 terminal. Install dependencies with:
pacman -S mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-ninja
cmake -B build -G "Ninja"
cmake --build buildThe engine binary will be at build/Argus.exe (Windows) or build/Argus (Linux/macOS).
cmake --build build --target Perft
./build/PerftExpected output from the starting position:
| Depth | Nodes |
|---|---|
| 1 | 20 |
| 2 | 400 |
| 3 | 8,902 |
| 4 | 197,281 |
| 5 | 4,865,609 |
| 6 | 119,060,324 |
- Download CuteChess
- Go to Tools → Engines → Add
- Point the executable path to
build/Argus.exe - Set protocol to UCI
- Start a game
You can also talk to the engine directly in the terminal:
uci
→ id name Argus
→ id author Aitaneuh
→ uciok
isready
→ readyok
position startpos moves e2e4 e7e5
go
→ info depth 6 score cp 30 nodes 124000 nps 980000
→ bestmove g1f3
- UCI communication
- Legal move generation
- Alpha-beta pruning
- Material evaluation
- MVV-LVA move ordering
- Piece-square tables (PST)
- Iterative deepening
- Transposition table
- Time management
- Opening book
- chess-library by Disservin — header-only move generation library
MIT