Chess Engine Communication Protocol

Home * Protocols * Chess Engine Communication Protocol

Chess Engine Communication Protocol (CECP), also dubbed the XBoard or WinBoard protocol after the eponymous XBoard or WinBoard graphical user interfaces (GUI), is an open communication protocol for chess engines to play games automatically, that is to communicate with other chess playing entities.

=GUI= A GUI supporting the protocol is known as XBoard or WinBoard, being for Unix (Posix) or Windows operating systems, respectively. Many other GUIs support the protocol, which is based on text commands, while requiring the engine to keep the state of the game internally. While the Universal Chess Interface is somewhat more popular today, the Chess Engine Communication Protocol protocol is preferred by some because it allows greater flexibility for the engine (for instance, in pondering).

=How it began= Tim Mann in an Interview by Frank Quisinsky, April 2000 : Originally, xboard and WinBoard were simply graphical user interfaces for GNU Chess, then for GNU Chess and Internet chess servers. Because the GUI and the chess engine are separate programs, several people thought of the idea of connecting their own chess programs in place of GNU Chess, and they began to email me asking how to do it. I think the first person to ask was Shay Bushinsky, in November 1994. Over the years I received so many requests for this information that I was more or less forced into documenting and extending the ad-hoc engine protocol to support them. The document that exists now (chess-engines.html) evolved directly from the original email reply I sent to Shay. Unfortunately, because the protocol was never really designed, but just grew out of documenting the existing communication with GNU Chess, there are still several bugs and deficiencies in it today. It would be nice to make some major revisions, but then of course it would (at best) take a long time for the existing engines to convert over to the new protocol, so both would have to be supported, probably forever.

=UML State diagram= WinBoard/XBoard protocol UML state diagram by Alessandro Scotti

=Version 2= Harm Geert Muller established a protocol Version 2 in September, 2009, also covering Chess Variants and different board sizes.

=Pros and Cons= Those pros and cons compared with UCI

Pros

 * All commands are short
 * Has redundant commands for almost all chess tasks from old-time to now
 * Designed to work without the need of having an extra thread for processing those commands
 * Allows users to play directly with chess engines without using chess GUIs
 * Allows chess engines act a bit independently such as they can auto-start pondering after a move

Cons

 * Has a long and complicated list of commands
 * Use many assumptions about data without keywords requirements. For example, the string "a2a3" is considered as a move, "9 156 1084 48000 Nf3 Nc6 Nc3 Nf6" is considered as a computing output when the first number is the ply, the second number is a score in centipawn unit...
 * Since allowing chess engines acting more independently chess GUIs may get loss to control engines
 * Some popular chess GUIs don't support
 * The majority of new chess engines don't support

=Engines= =GUIs=
 * WinBoard Engines
 * XBoard Engines

Native

 * WinBoard
 * XBoard

Compatible

 * Arena
 * ChessGUI
 * ChessPartner
 * ChessX
 * Cute Chess
 * EBoard
 * jose
 * PyChess
 * SCID
 * Scid vs. PC
 * Scidb
 * Banksia
 * Banksia GUI

=Utilities=
 * InBetween
 * PolyGlot
 * Wb2UCI
 * UCI2WB

=See also=
 * CPW-Engine_com
 * Engine Testing
 * GNU Chess
 * icsdrone
 * Pondering
 * UCI
 * Vice XBoard/WiBoard-Videos

=Forum Posts=

1990 ...

 * xboard datapoint by Paul Vaughan, gnu.chess, January 29, 1991
 * xboard v1.2 by Chris Sears, gnu.chess, June 14, 1991
 * reading in a position and playing in xboard by Lewis Stiller, gnu.chess, February 20, 1992
 * Re: Accessing remote computers with WinBoard by Tim Mann, gnu.chess, November 7, 1993

1995 ...

 * XBoard and WinBoard 3.4, patchlevel 1 by Tim Mann, rec.games.board, December 13 1995
 * XBoard and WinBoard, version 3.6.0 by Tim Mann, rgc, May 09, 1997
 * new autoplayer interface standard by Robert Hyatt, CCC, September 15, 1998
 * xboard/winboard interface documentation by Jan Eric Larsson, rgcc, November 27, 1998
 * WinBoard and pondering under W98 by Frank Phillips, CCC, July 28, 1999 » Pondering, WinBoard

2000 ...

 * Winboard for Dummies by Russell Reagan, rgcc, June 30, 2001
 * xboard and WinBoard 4.2.4 released by Tim Mann, gnu.chess, December 10, 2001
 * what is the importance of the ping command? by Uri Blass, Winboard Forum, September 24, 2002
 * Kiwi for Win98 and input-reading stuff by Alessandro Scotti, CCC, September 29, 2004 » Kiwi, Windows, C++, Thread

2005 ...

 * Safe I/O (repeated) by Fabien Letouzey, Winboard Forum, February 11, 2005
 * A question about kibitz by Niyaz Khasanov, Winboard Forum, February 18, 2005
 * Re: gnuchess/xboard protocol by Hans Eric Sandström, gnu.org, May 19, 2006
 * Authors of WinBoard SMP engines, take note! by Harm Geert Muller, CCC, October 11, 2008 » Parallel Search, SMP
 * UCI protocol in winboard by Engin Üstün, Winboard Forum, September 24, 2009 » UCI, WinBoard
 * Adapter for non-standard chess engine to Winboard by Carey, CCC, October 10, 2009

2010 ...
2011 2012 2013 2014
 * XBoard and epd tournament by Vlad Stamate, CCC, January 31, 2010 » Engine Testing
 * Aquarium (other GUIs too?) and WB support => I am shocked by Miguel A. Ballicora, CCC, February 27, 2010
 * WinBoard protocol driver by Harm Geert Muller, Winboard Forum - Chess Programming Lessons, April 30, 2011
 * Starting to use the Winboard Protocol by Reinhard Scharnagl, Winboard Forum, December 11, 2011
 * XBoard / WinBoard 4.6.0 released by Harm Geert Muller, CCC, March 11, 2012
 * Winboard protocol and fractional increments by Jon Dart, CCC, September 25, 2012 » Time Management
 * A few questions about CECP by Martin Sedlak, CCC, January 05, 2013
 * WB protocol: describing how a piece moves by Harm Geert Muller, CCC, October 12, 2013
 * WB protocol extension: thinking output by Harm Geert Muller, CCC, January 14, 2014
 * Handling xboard new game race condition in protover 1 engine by Matthew Lai, CCC, August 12, 2014
 * for Chess-variant authors by Harm Geert Muller, CCC, September 17, 2014
 * XBoard and chess variants by Evert Glebbeek, CCC, October 28, 2014
 * UCCI2WB by Harm Geert Muller, CCC, October 27, 2014
 * WB protocol specs by Harm Geert Muller, CCC, December 12, 2014

2015 ...
2016 2017 2018 ...
 * xboard softquit by Matthew Lai, CCC, July 26, 2015
 * Winboard 2 state diagram by thevinenator, OpenChess Forum, August 26, 2015
 * XBoard for Mac: Zippy problems by Steven Edwards, CCC, August 29, 2015 » Mac OS
 * Suggestions for XBoard documentation by Steven Edwards, CCC, August 30, 2015
 * CECP ('WB protocol') specs by Harm Geert Muller, CCC, December 28, 2015
 * Release of XBoard 4.9.0 soon by Harm Geert Muller, CCC, April 07, 2016
 * Chess on Android by Pedro Castro, CCC, April 19, 2016 » Chess for Android, DanaSah
 * CECP: Chess variants with dice by Harm Geert Muller, CCC, May 22, 2016
 * ChessGUI Timer Problem by Dennis Sceviour, CCC, October 24, 2016 » ChessGUI
 * Winboard variants online by Erin Dame, CCC, March 22, 2017 » Chess Variants
 * Winboard questions by Ed Schroder, CCC, June 26, 2017
 * Winboard: Resigning? by Rasmus Althoff, CCC, June 27, 2017
 * Loading opening book and tablebases (xboard vs uci) by Pedro Castro, CCC, October 15, 2017 » UCI
 * UCI vs Winboard question by Michael Sherwin, CCC, March 05, 2018 » UCI
 * Winboard state machine diagram by Harald Lüßen, CCC, April 15, 2019
 * Xboard, CECP, how to handle long inits by Srdja Matovic, CCC, July 04, 2019
 * Re: PGN standard, its improvement and standardization by Nguyen Pham, CCC, October 14, 2019 » from Portable Game Notation to Protocols

2020 ...

 * UCI to CECP by Fulvio, CCC, April 07, 2020 » UCI
 * Rolling dice by Harm Geert Muller, CCC, May 27, 2020 » EinStein würfelt nicht!
 * Questions about CECP post-nopost (UCI info) by Oliver Brausch, CCC, September 28, 2020
 * CECP "time" and "otim" by Marcel Vanthoor, CCC, November 30, 2020 » Time Management

=External Links=
 * Chess Engine Communication Protocol - GNU Project - Free Software Foundation
 * Chess Engine Communication Protocol from Wikipedia
 * Chess-Engine Communication Protocol by Harm Geert Muller
 * Chess Engine Communication Protocol by Tim Mann & Harm Geert Muller
 * Chess Engine Communication Protocol - New Specs by Harm Geert Muller
 * XBoard News by Harm Geert Muller
 * What is new in XBoard/WinBoard 4.9.0? by H.G. Muller


 * Tim Mann's Chess Pages, XBoard and WinBoard
 * rshd-readme.txt by Dan Newman


 * bug-xboard mail archive
 * Tinkering with Winboard... by Alessandro Scotti
 * Winboard/XBoard UML state diagram by Alessandro Scotti


 * FAQ on Winboard and Chess Engines by Aaron Tay
 * Lyapko George's WinBoard related page (outdated) by George Lyapko
 * Winboard and Chess Engines FAQ from Ron Murawski's Computer-Chess Wiki
 * WinBoard development and bugfixing Forum

=References= Up one Level