cutechess-cli(6) A command-line tool for chess engines matches


cutechess-cli -fcp [ENGINE OPTIONS] -scp [ENGINE OPTIONS] [OPTIONS]

cutechess-cli -both [ENGINE OPTIONS] [OPTIONS]


Runs chess matches from the command line.



Display the version information.


Display help information.


Display a list of configured engines and exit.


Display a list of supported chess protocols and exit.


Display a list of supported chess variants and exit.

-fcp <options>

Apply <options> to the first engine.

-scp <options>

Apply <options> to the second engine.

-both <options>

Apply <options> to both engines.

-variant <arg>

Set chess variant to <arg>.

-concurrency <n>

Set the maximum number of concurrent games to <n>.

-draw <n> <score>

Adjudicate the game as a draw if the score of both engines is within <score> centipawns from zero after <n> full moves have been played.

-resign <n> <score>

Adjudicate the game as a loss if an engine's score is at least <score> centipawns below zero for at least <n> consecutive moves.

-event <arg>

Set the event name to <arg>.

-games <n>

Play <n> games.


Display all engine input and output.

-pgnin <file>

Use <file> as the opening book in PGN format.

-pgndepth <n>

Set the maximum depth for PGN input to <n> plies.

-pgnout <file> [min]

Save the games to <file> in PGN format. Use the min argument to save in a minimal PGN format.


Restart crashed engines instead of stopping the match.


Play each opening twice so that both players get to play it on both sides.

-site <arg>

Set the site / location to <arg>.

-srand <n>

Set the random seed for the book move selector to <n>.

-wait <n>

Wait <n> milliseconds between games. The default is 0.



Use an engine with the name <arg> from Cute Chess\' configuration file.


Set the name to <arg>.


Set the command to <arg>.


Set the working directory to <arg>.


Pass <arg> to the engine as a command line argument.


Send <arg> to the engine's standard input at startup.


Set the restart mode to <arg> which can be: auto: the engine decides whether to restart (default) on: the engine is always restarted between games off: the engine is never restarted between games


Set the chess protocol to <arg>.


Set the time control to <arg>. The format is moves/time+increment, where moves is the number of moves per tc, time is time per tc (either seconds or minutes:seconds), and increment is time increment per move in seconds. Infinite time control can be set with tc=inf.


Set the time limit for each move to <n> seconds. This option can't be used in combination with "tc".


Let engines go <n> milliseconds over the time limit.


Use <file> (Polyglot book file) as the opening book.


Set the maximum book depth (in fullmoves) to <n>.


Invert the engine's scores when it plays black. This option should be used with engines that always report scores from white's perspective.


Set the search depth limit to <n> plies.


Set the node count limit to <n> nodes.


Set custom engine option <name> to value <arg>.


• Play ten games between two Sloppy engines with a time control of 40 moves in 60 seconds.

$ cutechess-cli -both cmd=sloppy proto=xboard tc=40/60 -games 10

• Use the name=Atak parameter because it's a Xboard protocol 1 engine and doesn't tell its name.

• Use the dir=C:\atak parameter to point the location of the executable.

• Glaurung can tell its name and is in the PATH variable so only the command is needed.

• Set Glaurung to use 1 thread.

• Set the time control to 40 moves in one minute and 30 seconds with a one second increment.

$ cutechess-cli -fcp name=Atak cmd=Atak32.exe dir=C:\atak proto=xboard -scp cmd=glaurung proto=uci option.Threads=1 -both tc=40/1:30+1


Written by Ilari Pihlajisto <[email protected]> and Arto Jonsson <[email protected]>.


Copyright (C) 2008-2011 Ilari Pihlajisto and Arto Jonsson. Free use of this software is granted under the terms of GNU General Public License (GPL).