Laveno

This is Laveno One, a pure Elixir chess engine. It includes board representation, game state management and valid moves generation as well as a set of board state evaluators with finders. A finder is a game play brain to actually play a game. It has UCI support, which enables using a chess GUI to interact with the engine.

Laveno exposes a handy API for each of it's components.

How to play

mix escript.build
./laveno

So it is ready to recieve UCI commands

printf 'uci
isready
position startpos moves e2e4
go wtime 1000 btime 1000 winc 0 binc 0
quit
' | ./laveno --finder alphabeta-negamax-ets | cat

you should see

id name laveno.one 0.2.0
id author Corral-Corral, Ricardo
uciok
readyok
info depth 2 score cp -1 nodes 0 time 0 pv c7c5
bestmove c7c5

Installation

If available in Hex, the package can be installed by adding laveno to your list of dependencies in mix.exs:

def deps do
  [
    {:laveno, "~> 0.2.0"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/laveno.