Volkrix is a UCI chess engine written in Rust. It is a clean-room implementation focused on long-term strength, reproducibility, and open development.
- Standard chess move generation with perft-verified legality
- Make/unmake with Zobrist hashing, repetition detection, and SEE
- Iterative deepening alpha-beta search with quiescence, PV tracking, aspiration windows, and quiet-move LMR
- Tapered classical evaluation: material, mobility, king safety, pawn structure, passed pawns, bishop pair, rook files, and lightweight threats
- Persistent transposition table with
Hash/Clear Hashcontrols - Lazy SMP via the
Threadsoption - Optional Syzygy tablebase probing (
SyzygyPath) - Optional NNUE evaluation (
EvalFile) using the in-treeVOLKNNUEformat - Reproducible
benchcommand tied to the real search
Volkrix builds on stable Rust with no external chess crates in the engine core.
cargo build --releaseThe release binary is written to target/release/volkrix.
A small helper script wraps the common workflows:
python3 scripts/dev.py fmt
python3 scripts/dev.py clippy
python3 scripts/dev.py test
python3 scripts/dev.py bench
python3 scripts/dev.py release --target aarch64-apple-darwinVolkrix speaks the Universal Chess Interface and works with any UCI-compatible GUI (Cute Chess, Arena, Banksia, etc.).
From a terminal:
$ volkrix
uci
position startpos moves e2e4 e7e5
go movetime 1000
Run a deterministic search benchmark:
volkrix benchuci, isready, ucinewgame, position, go, stop, quit.
go accepts depth, movetime, infinite, and the standard time-control fields (wtime, btime, winc, binc, movestogo).
| Option | Default | Description |
|---|---|---|
Hash |
16 | Transposition table size in MB |
Clear Hash |
— | Button: clear the transposition table |
Threads |
1 | Number of search threads (Lazy SMP) |
SyzygyPath |
"" | Directory containing Syzygy tablebase files |
EvalFile |
"" | Path to a VOLKNNUE network; empty uses classical eval |
Malformed FEN strings, illegal moves, and malformed UCI input are rejected without panicking or corrupting engine state.
Publishing a GitHub Release triggers .github/workflows/release.yml, which builds volkrix and uploads per-platform archives to the release.
src/ engine core (board, movegen, search, eval, UCI)
tools/ offline tooling, including the NNUE packer
trainer/ NNUE training pipeline
benches/ Criterion benches
tests/ integration and perft tests
docs/ design notes
Further reading lives in docs/:
architecture.md— module layout and data flowsearch.md— search algorithm detailsperft.md— move generation verificationnnue-training.md— NNUE training and packing workflowroadmap.md— planned work
Volkrix is an independent clean-room implementation. GPL-licensed engine code, machine translations, or close paraphrases of GPL sources must not be copied into this repository. Contributors may study public papers, algorithms, and high-level descriptions, but implementation must be written from scratch.
Dual-licensed under either of:
- MIT license (LICENSE-MIT)
- Apache License 2.0 (LICENSE-APACHE)
at your option.