perftcheck
CLI linux · macOS · windows
Cross-platform CLI that points at a UCI chess engine and validates
its go perft N
output against ~105,000 known-correct positions baked into the
binary. Writes a JSON report; exits non-zero on any mismatch.
Install
Self-contained single-file binaries published to GitHub Releases on every tagged build. No .NET runtime required on the target machine.
| Platform | Architecture | Asset |
|---|---|---|
| Linux | x86_64 | perftcheck-linux-x64 |
| Linux | aarch64 | perftcheck-linux-arm64 |
| macOS | Intel | perftcheck-osx-x64 |
| macOS | Apple Silicon | perftcheck-osx-arm64 |
| Windows | x86_64 | perftcheck-win-x64.exe |
macOS / Linux
$ curl -L -o perftcheck \ https://github.com/Timmoth/grandchesstree/releases/latest/download/perftcheck-<rid> $ chmod +x perftcheck $ ./perftcheck --engine ./your-engine
On macOS, Gatekeeper may quarantine the binary on first run.
Right-click → Open, or run
xattr -d com.apple.quarantine perftcheck.
Windows (PowerShell)
PS> Invoke-WebRequest ` https://github.com/Timmoth/grandchesstree/releases/latest/download/perftcheck-win-x64.exe ` -OutFile perftcheck.exe PS> .\perftcheck.exe --engine .\your-engine.exe
Usage
One required flag — --engine,
pointing at a UCI executable. Default run walks every bundled
position to depth 4 and writes
perft-report.json.
Source & full docs:
PerftSuite/.
$ ./perftcheck --engine ./stockfish
| Flag | Default | Description |
|---|---|---|
-e, --engine <PATH> | required | UCI engine executable |
--epd <FILE> | bundled | Use this EPD file instead of the bundled corpora. Repeatable. |
--depth-cap <N> | 4 | Skip cases deeper than this |
--depth-min <N> | 1 | Skip cases shallower than this |
--timeout <SECS> | 30 | Per-case timeout; engine is killed and restarted on exceed |
--filter <SUBSTR> | — | Only run cases whose FEN contains this substring |
--limit <N> | — | Take only the first N matching cases |
--report <PATH> | perft-report.json | Path to write the JSON report |
--fail-fast | off | Stop on the first non-pass |
--quiet | off | Suppress live console output (CI mode) |
Exit codes:
0 all passed,
1 at least one failure,
2 bad args.