This project is read-only.

Project Description

UCIPlug allows dumping the UCI messages exchanged between a UCI compliant GUI (for ex., Chessbase) and an UCI engine (for ex., Rybka 2.2). UCIPlug is written in C# and is targeted at .NET 3.5 (though, can be recompiled for .NET 2.0).

What is UCI?

UCI stands for “Universal Chess Interface”. It is a text protocol between a chess engine and a chess GUI.

Here is what Wikipedia has to say about UCI:

The Universal Chess Interface (UCI) is an open communication protocol that enables a chess program's engine to communicate with its user interface.

It was designed and released by Rudolf Huber and Stefan Meyer-Kahlen, the author of Shredder, in November 2000, and can be seen as a rival to the older XBoard/WinBoard Communication protocol. Like the latter, it is free to use without license fees.

Customarily, UCI assigns some tasks to the user interface that have traditionally been handled by the engine itself. Most notably, the opening book is usually expected to be handled by the interface, by simply selecting moves to play until it is out of book, and only then starting up the engine for calculation in the resulting position. (UCI does not specify any on-disk format for the opening book; different UIs — user interfaces — usually have their own, proprietary formats.) Also, the user interface may handle endgame tablebases if the engine does not support it itself, although this is often better handled in the engine, as having tablebase information can be useful to consider a possible future position.

In short, if you are a chess engine developer, you’d want to add support for UCI. This way you can use one of the umpteen free Chess interfaces available out there to test your engine. Similarly, anybody who has one of these Chess interfaces will be able to use your engine instantaneously.

Latest UCI protocol specification is available at

How does UCIPlug work?

UCI plug shows itself as an UCI engine to the Chess interface, while in the background it loads the actual UCI engine. This way, it sits in the middle and can see all the command/response flows between the chess interface and the chess engine.

For example, this is how Rybka under Arena will look like. The RED arrow is the UCI communication channel.



This is how UCIPlug fits in the picture:  




Read the documentation page for instructions on how to install and use UCIPlug.


.NET Framework 3.5 SP1

Last edited Jan 4, 2011 at 10:47 AM by kannanmr, version 3