Difference between revisions of "Chess Engine Communication Protocol"

From Chessprogramming wiki
Jump to: navigation, search
Line 141: Line 141:
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75239 Questions about CECP post-nopost (UCI info)] by [[Oliver Brausch]], [[CCC]], September 28, 2020
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75239 Questions about CECP post-nopost (UCI info)] by [[Oliver Brausch]], [[CCC]], September 28, 2020
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75944 CECP "time" and "otim"] by [[Marcel Vanthoor]], [[CCC]], November 30, 2020 » [[Time Management]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75944 CECP "time" and "otim"] by [[Marcel Vanthoor]], [[CCC]], November 30, 2020 » [[Time Management]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=76106 FRC in CECP] by lucasart, [[CCC]], December 20, 2020 » [[Chess960]]
=External Links=  
=External Links=  

Revision as of 09:04, 23 December 2020

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.


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 [1]:

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 [2] [3]

Version 2

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

Pros and Cons

Those pros and cons compared with UCI


  • 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


  • 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






See also

Forum Posts

1990 ...

1995 ...

2000 ...

2005 ...

2010 ...





2015 ...



2018 ...

2020 ...

External Links

What is new in XBoard/WinBoard 4.9.0? by H.G. Muller
rshd-readme.txt by Dan Newman [7] [8]
Winboard/XBoard UML state diagram by Alessandro Scotti


Up one Level