CUTECHESS-CLI(6)
πΈ CUTECHESS-CLI(6) β Games Manual πΈ
π NAME π
cutechess-cli β Automate chess engine tournaments. That is literally the whole point, bestie. π
β¨ SYNOPSIS β¨
cutechess-cli -engine engine-options -engine engine-options
[-engine engine-options ...] [options]
π¦ DESCRIPTION π¦
Okay so the cutechess-cli utility automates chess engine tournaments. No cap, that is its whole job. Its options are as follows β yes, every single one, we are going through them all:
-engine engine-optionsβ Add an engine defined by engine-options to the tournament. See βEngine Optionsβ.-each engine-optionsβ Apply engine-options to each engine in the tournament. See βEngine Optionsβ.-variant variantβ Set the chess variant, where variant is one of these iconic picks:3checkβ Three-check Chess5checkβ Five-check Chessai-wokβ Ai-Wok (Makruk variant)almostβ Almost Chessamazonβ Amazon Chessandernachβ Andernach Chessantiandernachβ Anti-Andernach Chessantichessβ Antichess / Losing Chessaseanβ ASEAN-Chessatomicβ Atomic Chessberolinaβ Berolina Chesscambodianβ Ouk Chatrang (Cambodian Chess)capablancaβ Capablanca Chesscaparandomβ Capablanca Random Chesscfourβ Cfour (7x6, line up 4 to win)chancellorβ Chancellor Chess (9x9)changeoverβ Change-Over Chesschecklessβ Checkless Chesschessgiβ Chessgi / Drop Chesschigorinβ Chigorin Chesscirculargryphonβ Circular Gryphon Chesscodrusβ Game of Codrus (Losing Chess Variant)coregalβ Co-regal Chesscourierβ Courier Chess (Medieval)crazyhouseβ Crazyhouse (Drop Chess Variant)displacedgridβ Displaced Grid Chessdobutsuβ Dobutsu Shogi (3x4)embassyβ Embassy Chesseuroshogiβ EuroShogi (8x8)extinctionβ Extinction Chessfischerandomβ Fischer Random Chess / Chess 960giveawayβ Giveaway Chess (Losing Chess)gomokuβ Gomoku (15x15, exactly 5 in a row to win)gomokufreestyleβ Gomoku Free-Style (5 in a row to win)gothicβ Gothic Chessgrandβ Grand Chessgridβ Grid Chessgridolinaβ Berolina Grid Chessgryphonβ Gryphon Chessgustav3β Gustav III's Chesshoppelpoppelβ Hoppel-Poppel (has N/B hybrids)hordeβ Horde Chess (v2)janusβ Janus Chessjesonmorβ Jeson MΓΆrjudkinsβ Judkins Shogi (6x6)karoukβ Kar Ouk (One-check Ouk)kingletβ Kinglet Chesskingofthehillβ King of the Hill Chessknightmateβ Knightmateknightrelayβ Knight-Relay Chessloopβ Loop Chess (Drop Chess Variant)losalamosβ Los Alamos Chesslosersβ Loser's Chessmakrukβ Makruk (Thai Chess)minishogiβ Minishogi (5x5)modernβ Modern Chess (9x9)newzealandβ New Zealand Chess (has N/R hybrids)placementβ Placement Chesspocketknightβ Pocket Knight Chessracingkingsβ Racing Kings Chessrifleβ Rifle Chessseirawanβ S-Chess (Seirawan Chess)shatranjβ Shatranjshogiβ Shogishootβ Shoot Chesssimplifiedgryphonβ Simplified Gryphon Chesssittuyinβ Sittuyin (Myanmar Chess)slippedgridβ Slipped Grid Chesssuicideβ Suicide Chess (Losing Chess Variant)superandernachβ Super-Andernach Chessthreekingsβ Three Kings Chesstictactoeβ Tic-tac-toetwokingsβ Two Kings Each Chess (Wild 9)twokingssymmetricβ Symmetrized Wild 9standardβ Standard Chess (default)
-concurrency nβ Set the maximum number of concurrent games to n.-draw movenumber=number movecount=count score=scoreβ Adjudicate the game as draw if the score of both engines is within score centipawns from zero for at least count consecutive moves, and at least number full moves have been played. Captures and pawn moves will reset the counters.-resign movecount=count score=score [twosided=value]β Adjudicate the game as a loss if an engine's score is at least score centipawns below zero for at least count consecutive moves. If value is true (default: false) then activate two-sided resign adjudication. The winning side's scores must be at least score centipawns above zero for at least count consecutive moves.-maxmoves nβ Adjudicate the game as a draw if at least n full moves have been played without result. Ignored if n equals zero (default).-tb pathsβ Adjudicate games using Syzygy tablebases. Paths should be semicolon-delimited list of paths to the compressed tablebase files. Only the WDL tablebase files are required.-tbpieces Nβ Only use tablebase adjudication for positions with N pieces or less.-tbignore50β Disable the fifty move rule for tablebase adjudication.-tournament typeβ Set the tournament type, where type is one of:round-robinβ Round-robin tournament (default)gauntletβ First engine(s) against the restknockoutβ Single-elimination tournamentpyramidβ Every engine plays against all of its predecessors
-event argβ Set the event name to arg.-games nβ Play n games per encounter. This value should be set to an even number in tournaments with more than two players to make sure that each player plays an equal number of games with white and black pieces.-rounds nβ Multiply the number of rounds to play by n. For two-player tournaments this option should be used to set the total number of games to play.-sprt elo0=E0 elo1=E1 alpha=Ξ± beta=Ξ²β Use a Sequential Probability Ratio Test as a termination criterion for the match.
This option should only be used in matches between two players to test if engine P1 is stronger than engine P2. Hypothesis H1 is that P1 is stronger than P2 by at least E0 ELO points, and H0 (the null hypothesis) is that P1 is not stronger than P2 by at least E1 ELO points. The maximum probabilities for type I and type II errors outside the interval [ E0, E1 ] are Ξ± and Ξ².
The match is stopped if either H0 or H1 is accepted or if the maximum number of games set by -rounds and / or -games is reached.
-ratinginterval nβ Set the interval for printing the ratings to n games.-outcomeinterval nβ Set the interval for printing outcomes to n games.-debugβ Display all engine input and output.-openings file=file format=[epd | pgn] order=[random | sequential] plies=plies start=start policy=[default | encounter | round]β Pick game openings from file. The file can be either in epd (Extended Position Description) or pgn (Portable Game Notation) format. The default format is pgn. Openings can be picked in random or sequential (default) order. The opening depth is limited to plies number of plies. If plies is not set the opening depth is unlimited. In sequential mode start is the number of the first opening that will be played. The minimum value for start is 1 (default).
The value of policy rules when to shift to a new opening. If set to encounter a new opening is used for any new pair of players, round shifts when a new round begins. The default shifts for any new pair of players and also when the specified number of opening repetitions is reached.
-bookmode modeβ Set Polyglot book access mode, where mode is either ram (the whole book is loaded into RAM) or disk (the book is accessed directly on disk). The default mode is ram.-pgnout file [min] [fi]β Save the games to file in PGN format. Use the min argument to save in a minimal PGN format. Only finished games will be saved if argument fi is given.-epdout fileβ Save the games to file in FEN format.-recoverβ Restart crashed engines instead of stopping the game.-repeat [n]β Play each opening twice (or n times). Unless the-noswapoption is used, the players swap sides after each game. So they get to play the opening on both sides. Please note that a new encounter will use a new opening.-noswapβ Do not swap sides of paired engines.-reverseβ Use schedule with reverse sides.-seeds nβ Set the first n engines as seeds in the tournament. The default is 0.-site argβ Set the site / location to arg.-srand seedβ Set the random seed for the book move selector.-wait nβ Wait n milliseconds between games. The default is 0.-resultformat formatβ Specify the format of result lists. Format can either be a comma separated list of fields or a format name. Format help shows available named formats. The default format lists rank, name, elo, elo error, number of games, score percentage, and draw percentage of every player.-versionβ Display the version information.-helpβ Display help information.-enginesβ Display a list of configured engines and exit.
π Engine Options π
conf=argβ Use an engine with the name arg from engine configuration file.name=argβ Set the name to arg.cmd=argβ Set the command to arg.dir=argβ Set the working directory to arg.stderr=argβ redirects standard error output into the file arg π«Ά so your engine's messy lil tantrums go somewhere other than your terminal.proto=[uci | xboard]β sets the chess protocol, iykyk. Pickuciorxboardβ¨tc=[tcformat | inf]β sets the time control π The format ismoves/time+increment, where:movesis the number of moves per tctimeis the time per tc (either plain seconds, orminutes:seconds)incrementis the time increment per move, in seconds
You can also set an infinite time control with inf βΎοΈ
option.name=valueβ sets a custom engine option, no cap πarg=argβ passes arg to the engine as a command line argument.initstr=argβ sends arg to the engine's standard input at startup πΈrestart=[auto | on | off]β sets the engine restart mode:automeans the engine decides whether to restart (this is the default π)onmeans the engine is always restarted between gamesoffmeans the engine is never restarted between games
Heads up bestie: setting this option does not prevent engines from being restarted between rounds in a tournament featuring more than two engines. That's just how it is, periodt.
trustβ trusts result claims from the engine without validation. By default all claims are validated, so this is you literally saying "yeah I believe you" to a machine πst=nβ sets the time limit for each move to n seconds. This option cannot be used in combination with thetcoption β pick one, bestie, you can't have both πtimemargin=nβ lets engines go n milliseconds over the time limit. A little grace period, we love to see it π§book=fileβ uses file (a Polyglot book file) as the opening book πbookdepth=nβ sets the maximum book depth (in fullmoves) to n.whitepovβ inverts the engine's scores when it plays black. Use this one with engines that always report scores from white's perspective, k? βponderβ enables pondering if the engine supports it π€depth=pliesβ sets the search depth limit, in plies.nodes=countβ sets the node count limit π₯tscale=factorβ scales engine timeouts by factor. Only use this option if necessary, fr fr, don't just vibe with it.debugβ activates debug mode (per protocol, UCI only) π¦
π EXAMPLES π
Play ten games between two Sloppy engines with a time control of 40 moves in 60 seconds:
$ cutechess-cli -engine cmd=sloppy -engine cmd=sloppy -each proto=xboard tc=40/60 -rounds 10
Play a single game between Atak and Glaurung engines with a time control of 40 moves in one minute and 30 seconds with one second increment:
$ cutechess-cli -engine name=Atak cmd=Atak32.exe dir=C:\atak proto=xboard -engine cmd=glaurung proto=uci option.Threads=1 -each tc=40/1:30+1
Let me break down the deets for you π
- Use the
name=Atakparameter because it's a Xboard protocol 1 engine and doesn't tell its name. Rude of it, honestly. - Use the
dir=C:\atakparameter to point the location of the executable. - Glaurung can tell its name and is in the
PATHvariable so only the command is needed. Main character energy, it knows who it is π - Set Glaurung to use 1 thread.
- Set the time control to 40 moves in one minute and 30 seconds with one second increment.
Play a Round-Robin tournament between Fruit, Crafty, Stockfish and Sloppy:
$ cutechess-cli -engine conf=Fruit -engine conf=Crafty -engine conf=Stockfish -engine conf=Sloppy -each tc=4 book=book.bin -games 2 -rounds 10 -repeat
- Play two games per encounter, effectively multiplying the number of games by 2.
- Play 10 times the minimum amount of rounds (3). So the total number of rounds to play will be 30, and the total number of games 120. Math ate, honestly π₯
- In each two-game encounter colors are switched between games and the same opening line is played in both games.
π SEE ALSO π
cutechess-engines.json(5) β go read it, bestie, it's giving essential companion doc π«Ά
π AUTHORS π
The cutechess-cli utility was written by Ilari Pihlajisto, Arto Jonsson and contributors. See the project page for more details. Legends, all of them β¨
πΈ RESOURCES πΈ
- Project page:
http://github.com/cutechess/cutechessβ go click, go stan π
And that's the whole page, bestie! π¦ This lil gem is from Debian, dated June 28, 2020, and lives at CUTECHESS-CLI(6) β go forth and run tournaments, and remember: no cap, read your options π β¨
π¦ where this page comes from
- nixos 26.05: cutechess 1.4.0
- nixpkgs unstable: cutechess 1.4.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms