A Kotlin Chess Engine
Clone or download
Latest commit 1928aab Nov 12, 2018


Build Status


A Kotlin Chess Engine with Universal Chess Interface protocol support.


  • Color represents chess colors.
  • Piece represents chess piece type.
  • Bitboard represents a board (each signed bit indicates a piece on that location).
  • Square represents a board position square index.
  • File represents a board file index.
  • Rank represents a board rank index.


  • Bitboard representation
  • Magic bitboard
  • Transposition table
  • Static Exchange Evaluation
  • Quiescence search
  • Alpha-beta search
    • Aspiration window
    • Interactive deepening
    • Null move reduction
    • Razoring pruning
    • Futility pruning
    • Late Move Reduction
    • Late move pruning
    • History futility pruning
  • Evaluation
    • Material value
    • Piece square table
    • Tapered evaluation
    • Mobility
    • Pawn evaluation
    • Passed pawn evaluation
    • King safety
    • Safe check
  • Move Ordering
    • Most value victim / Lowest Value Attacker
    • Killer moves
    • Butterfly history
  • Multi Thread

How to use


The engine runs on JRE (Java Runtime Environment) version 8 and above.


  • Download the latest release.
  • Uncompress the downloaded file in a empty directory.
  • Run the bash file in bin directory.

Compatible Interfaces


You are welcome to contribute, please follow the instructions.


Version 2.2.2

Version 2.1.1

Version 2.0.7

Version 2.0.2


  • To all who share ideas and/or code, without this huge resource I would not be able to make such strong engine.
  • To all who tested Pirarucu, especially to all CCRL team who are constantly testing several engines (including several versions of Pirarucu).
  • To Andrew Grant for developing OpenBench, a great open source tool to test and track progress of chess engines. I started using it just after v2.2.2 release and recommend it for every author.
  • To all who shared their computer power with the Pirarucu OpenBench instance.


  • Raoni Campos