Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
July 22, 2022 17:17
March 18, 2019 09:25
May 14, 2015 15:43
July 6, 2022 10:39
May 23, 2021 16:59
July 6, 2022 10:39


UCI Chess Engine

Cinnamon is a chess program for Windows, Linux, Mac OS, Android and Raspberry Pi, is a console-based chess engine for use with xboard, Arena, Tarrasch, Droidfish or any UCI-compatible GUI. Cinnamon is also a javascript library to play with chessboardjs or any js GUI.




  • Time management
  • Tapered eval

Useful links


  • Elo ratings
  • Available for both Unix, Windows, Mac, Android, ARM and Javascript
  • UCI protocol
  • GPL 3 License
  • Chess 960
  • C++11 source
  • PVS
  • Rotated bitboards
  • Null moves
  • Futility pruning
  • Reverse Futility Pruning
  • Delta pruning
  • Razoring
  • Interruptible multithread Perft test standard and chess960
  • 32/64 bit architectures
  • Iterative deeping
  • History heuristics
  • Killer heuristics
  • Lazy evaluation
  • Transposition Table
  • Aspiration Windows
  • Late Move Reduction
  • Ponder
  • Gaviota Tablebases
  • Syzygy Tablebases


Binaries are available here. All files are compiled statically, no further libraries are necessary.

Command line tools


cinnamon.exe -perft [-d depth] [-c nCpu] [-h hash size (mb) [-F dump file]] [-Chess960] [-f "fen position"]

Setting -F and -h you can stop (Ctrl-c) and restart the perft process.

Gaviota DTM (distance to mate)

cinnamon.exe -dtm-gtb -f "fen position" -p path

Gaviota WDL (win/draw/loss)

cinnamon.exe -wdl-gtb -f "fen position" -p path

SYZYFY DTZ (distance to zero)

cinnamon.exe -dtz-syzygy -f "fen position" -p path

SYZYFY WDL (win/draw/loss)

cinnamon.exe -wdl-syzygy -f "fen position" -p path

EPD generator

cinnamon.exe -puzzle_epd -t K?K?

example: cinnamon.exe -puzzle_epd -t KRRKPN


Cinnamon requires C++11 or greater

  • use MS Visual Studio (cinnamon.vcxproj)

  • use cmake (CMakeLists.txt)

  • use make - unique Makefile to compile for many architectures:

    $ make

    Makefile for cross-compile Linux/Windows/OSX/ARM/Javascript

    make cinnamon64-modern-INTEL     > 64-bit optimized for modern Intel cpu
    make cinnamon64-BMI2             > 64-bit optimized for Haswell Intel cpu
    make cinnamon64-modern-AMD       > 64-bit optimized for modern Amd cpu
    make cinnamon64-modern           > 64-bit with popcnt bsf sse3 support
    make cinnamon64-generic          > Unspecified 64-bit
    make cinnamon64-ARM              > Optimized for ARM cpu

    make cinnamon32-modern           > 32-bit with sse support
    make cinnamon32-generic          > Unspecified 32-bit
    make cinnamon32-ARM              > Optimized for ARM cpu

    make cinnamon-js                 > Javascript build

     COMP=compiler                   > Use another compiler
     FULL_TEST=yes                   > Unit test (googletest)

    g++ is the default compiler, add COMP=yourcompiler to use another compiler
     example: make cinnamon64-modern-INTEL COMP=clang++


Cinnamon is released under the GPLv3+ license.


Cinnamon was written by Giuseppe Cannella at gmail dot com.