Eman is a UCI chess engine by Khalid Omar

It is derived from Stockfish, a very strong world class and open-source chess engine.



Current Stable Version: 4.60

Find the author on InfinityChess

or Infinitychess Users Forum



Eman playing style is both aggressive and optimistic. The engine always assumes that it will find something (and it often does) in drawing or losing positions.

Eman also supports self learning (aka, experience), where the engine learns from previous games**. The more experience the engine has, the better and faster the game play will be.

**Experience data is not only built for Eman moves only, it will also be built for the opponent moves as well. At the end of the game, the moves are re-evaluated based on the final outcome of the game



Eman has customized search logic which has proven to be more dynamic and aggressive than Stockfish.

Eman also extends Stockfish evaluation logic with a revolutionary Coherence evaluation which, on a nutshell, gives the teeth to the fish!

Coherence evaluation allows Eman to spot the winning lines from a mile away. It also allows Eman to clearly distinguish between positions that Stockfish thinks are equal!



Eman extends Stockfish capability by adding built-in support for PolyGlot BIN opening books. Eman also supports BIN book learning (see below)

In addition to that, Eman has built in Large Memory Pages support, a slightly better NUMA support (work in progress) than Stockfish, and much more!


In addition to the standard Stockfish options, Eman also offers the following:

General Options

  • Large Pages:
    If enabled the engine will try to allocate memory for the hash tables using Large Page allocation. If this feature is not supported by the OS or the engine does not have enough privileges or not enough continuous memory block is available then the normal memory allocation technique is used by default
  • Time Buffer (s):
    Use this option to configure the emergency reserved time buffer in seconds. The engine assumes that the available time for the entire game is "actual time" - "this value" when it calculates how much time it should spend thinking about the current position
  • Only Instance:
    Use this option to force only one instance of the engine exe to run at a time. This option can be useful in case the GUI fails to terminate the previous instance before starting a new one. The previous instance could be stuck and eating CPU which affects performance of the second instance during game play
  • Dynamic Contempt:
    This option enables or disables the Dynamic Contempt which acts as a strategic optimism feature. This feature adds on top of the "static" Contempt configured in the options.
    Tests show that Dynamic Contempt can make the engine more aggressive and leads to less draws. However, most likely the engine evaluation will be a little higher than it should and often times the evaluation may drop suddenly resulting in a draw. Overall, it is recommended to enable the Dynamic Contempt.


  • Experience file:
    Name of the file to be used for storing experience data. You can specify <empty> to disable experience file usage and generation
  • Experience Book:
    This option allows the engine to play moves directly from the experience file (without thinking). In other words, the experience file will be used as a book.

    If this option is enabled, the engine assigns a "quality" value to all the moves available for the current position in the experience file. The move with highst quality is played. If all moves have negative quality then it is considered out-of-book and the engine starts thinking.

    The calculated move quality is the result of applying a simple equation that takes into consideration previous score, next score, count, etc...

    NOTE: This feature is still experemental. Enable at your own risk.
    NOTE: This feature may allow the engine to play faster, but it is not necesserly stronger as normal thinking + experience data is usually better.
  • Experience Read Only:
    If enabled it allows the engine to use experience data during game play but it does not allow the it to update the experience data after the game. This mode may be preferred by some users while testing short time control games in order to maintain a certain level of quality among experience data. 

  • This may be a good idea, but the engine is capable of utilizing any experience move of any depth during the search so it does not hurt to have experience data for various depths
  • Experience Min Move #:
    Minimum move number for which Eman will start recording experience data.
  • Experience Max Move #:
    Maximum move number for which Eman will stop recording experience data.

Opening Book Options

  • Book 1:
    Book file. By default the book file is assumed to be in the same directory where the engine executable is located. However, the user can specify a full path (example: C:\path\to\my\book.bin). Specify <empty> disable using BIN book
  • Book 1 Learning Enabled:
    If this option is enabled, Eman will store learning weights to the configured BIN file. The weights are calculated based on game outcome, only when the game is decided (clear win or clear draw). If white is winning, Eman assigns +3 to all white moves from the book, and -3 to all black moves. If Black is winning, Eman assigns +4 to all black moves and -4 to all white moves

    Note 1: Eman will only assign learning weights to moves that already exist in the book. It will not add new moves or remove existing moves to/from the book. Ultimately, the book size will never change.

    Note 2: Eman will also learn from the moves made by the opponent if those moves exist in the configured book
  • Book 1 Learn from draw:
    This option has effect only if Book 1 Learning Enabled option is enabled. This option modifies existing weights of moves in the BIN book if the game is a clear draw. The weight assigned to moves in case of draw only weighs in the opposite direction of the current weight!

    For example: If the current weight is positive and the game is draw then the current weight is decremented by 1. Similarly, if the weight is negative and the game is draw then the weight is incremented by
  • Book 1 Width:
    This option defines the number of moves to consider from the book for a certain position. If the number of possible moves in the book is above the configured value, then only the "best" X moves are considered (X = configured value). To play the best book line, simply configure this option as "1"
  • Book 1 Depth:
    Use this option to limit the maximum number of moves to play from the book.
  • Book 2 Options:
    Same as Book 1 options except that Book 2 file is configured to be <empty> by default.

Other book options
  • OutOfBook Think Hard Moves:
    This options allows the engine to allocate slightly more time than usual for thinking immediately after exiting the book. The configured number defines how many moves (after exiting the book) will have longer than usual time for thinking. Setting this option to "0" completely disables this feature