Skip to content

39hops/ply

Repository files navigation

ply

A from-scratch alpha-beta UCI chess engine in Rust. Targeting 3500 Elo single-thread / 3650 multi-thread (8 cores) on the dev box, measured against CCRL 40/15. Stretch: 3600 / 3700 if NNUE training overshoots.

Path to target: magic-bitboard movegen → full search arsenal (LMR, singular extensions, aspiration, futility) → HalfKP NNUE small → HalfKAv2_hm NNUE full → SPSA tuning + Syzygy + Lazy SMP. Aggressive sacrificial style available via UCI Style = Aggressive flag (Neutral default).

Day one: nothing is implemented. The repository ships the operating contract, project doc, phase ledger, scripts, CI, design spec, and Phase 1 plan. Engine code lands phase by phase against plans under docs/superpowers/plans/.

Status

See docs/PHASE_STATUS.md for the verified-delivery ledger and CLAUDE.md for the current-state table. Per AGENTS.md §1, a feature counts only when it's both implemented and verified.

Build

# macOS / Linux
scripts/setup.sh
scripts/build.sh        # cargo build --release
scripts/test.sh         # fmt + clippy + cargo test + perft

# Windows
scripts\win-setup.bat
scripts\win-build.bat
scripts\win-test.bat

UNVERIFIED until Phase 0 ships.

Workspace

engine/      Rust library  — board, movegen, eval (HCE + NNUE), search, TT, SMP, Syzygy
uci/         Rust binary   — UCI protocol shell
bench/       Rust binary   — perft, nps, Bratko-Kopec, ordo gauntlet
datagen/     Rust binary   — self-play position dumps (binpack format)
tuner/       Rust binary   — SPSA tuning loop wrapping cutechess-cli
trainer/     Python        — PyTorch NNUE training (separate subproject)
nets/        binary blobs  — trained NN weights (git-lfs or gitignored)
data/        binpack files — training corpora (gitignored)

Docs

  • AGENTS.md — agent operating contract (honesty floor).
  • CLAUDE.md — project operating doc (stack, style, current state).
  • docs/CAPABILITIES.md — honest can / cannot.
  • docs/ARCHITECTURE.md — crate DAG + module layout + key interfaces.
  • docs/ROADMAP.md — phases 0..13, exit criteria.
  • docs/PHASE_STATUS.md — verified-delivery ledger.
  • docs/superpowers/specs/2026-05-23-ply-design.md — full design spec.
  • docs/superpowers/plans/ — per-phase implementation plans.
  • docs/style/rust.md — Rust style for this project.
  • handoffs/ — session-to-session notes.

License

Apache-2.0. See LICENSE. © 2026 Artin Azizi.

About

From-scratch alpha-beta UCI chess engine in Rust — magic bitboards, NNUE eval, modern search. Targeting ~3500 Elo.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages