Lila (li[chess in sca]la) is a free online chess game server focused on realtime gameplay and ease of use.
It features a search engine, computer analysis distributed with fishnet, tournaments, simuls, forums, teams, tactic trainer, a mobile app, and a shared analysis board. The UI is available in more than 130 languages thanks to the community.
Lichess is written in Scala 2.13, and relies on the Play 2.8 framework. scalatags is used for templating. Pure chess logic is contained in the scalachess submodule. The server is fully asynchronous, making heavy use of Scala Futures and Akka streams. WebSocket connections are handled by a separate server that communicates using redis. Lichess talks to Stockfish deployed in an AI cluster of donated servers. It uses MongoDB to store more than 1.7 billion games, which are indexed by elasticsearch. HTTP requests and WebSocket connections can be proxied by nginx. The web client is written in TypeScript and snabbdom, using Sass to generate CSS. The blog uses a free open content plan from prismic.io. All rated games are published in a free PGN database. Browser testing done with . Proxy detection done with IP2Proxy database. Please help us translate Lichess with Crowdin.
See lichess.org/source for a list of repositories.
./lila # thin wrapper around sbt run
The Wiki describes how to setup a development environment.
Feel free to use the Lichess API in your applications and websites.
|Chromium / Chrome||last 10||Full support|
|Firefox||61+||Full support (fastest local analysis since FF 79)|
Older browsers (including any version of Internet Explorer) will not work. For your own sake, please upgrade. Security and performance, think about it!
Lila is licensed under the GNU Affero General Public License 3 or any later version at your choice with an exception for Highcharts. See COPYING for details.