• Stars
    star
    15,513
  • Rank 1,874 (Top 0.04 %)
  • Language
    Scala
  • License
    GNU Affero Genera...
  • Created over 12 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

♞ lichess.org: the forever free, adless and open source chess server ♞

lichess.org

Build server Build assets Crowdin Twitter Discord

Lichess homepage

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 3, 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 Browserstack. Proxy detection done with IP2Proxy database. Please help us translate Lichess with Crowdin.

See lichess.org/source for a list of repositories.

Join us on Discord for more info. Use GitHub issues for bug reports and feature requests.

Installation

./lila # thin wrapper around sbt
run

The Wiki describes how to setup a development environment.

HTTP API

Feel free to use the Lichess API in your applications and websites.

Supported browsers

Name Version Notes
Chromium / Chrome last 10 Full support
Firefox 63+ Full support (fastest local analysis since FF 79)
Edge 91+ Full support (reasonable support for 17+)
Opera 55+ Reasonable support
Safari 11.1+ Reasonable support

Older browsers (including any version of Internet Explorer) will not work. For your own sake, please upgrade. Security and performance, think about it!

License

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.

Production architecture (as of July 2022)

Lichess production server architecture diagram

Credits

See lichess.org/thanks and the contributors here:

GitHub contributors

Competence development program

Lichess would like to support its contributors in their competence development by covering costs of relevant training materials and activities. This is a small way to further empower contributors who have given their time to Lichess and to enable or improve additional contributions to Lichess in the future. For more information, including how to apply, check Competence Development for Lichess contributors.

More Repositories

1

lichobile

lichess.org mobile application
TypeScript
2,032
star
2

mobile

Lichess mobile app v2
Dart
1,316
star
3

chessground

Mobile/Web chess UI for lichess.org
TypeScript
1,011
star
4

fishnet

Distributed Stockfish analysis for lichess.org
Rust
708
star
5

scalachess

Chess API written in scala. Immutable and free of side effects.
Scala
636
star
6

api

Lichess API documentation and examples
TypeScript
444
star
7

chess-openings

An aggregated data set of chess opening names
Python
354
star
8

stockfish.wasm

WebAssembly port of the strong chess engine Stockfish
C++
257
star
9

stockfish.js

The strong open source chess engine Stockfish compiled to JavaScript and WebAssembly using Emscripten
C++
195
star
10

lila-ws

Lichess' websocket server
Scala
146
star
11

lila-openingexplorer

Opening explorer for lichess.org that can handle all the variants and trillions of unique positions
Rust
132
star
12

compression

Chess clock and move compression algorithms for lichess.org
Java
110
star
13

lila-gif

Webservice to render Gifs of chess positions and games, and stream them frame by frame
Rust
104
star
14

pgn-viewer

PGN viewer widget
TypeScript
101
star
15

lila-tablebase

Tablebase server
Rust
85
star
16

berserk

Python client for the lichess API
Python
85
star
17

database

Public exports of all rated games, puzzles, and computer evaluations.
Scala
83
star
18

external-engine

Using engines running outside of the browser on https://lichess.org/analysis
Python
77
star
19

api-demo

Client-side app using various Lichess APIs for demonstration purpose
TypeScript
56
star
20

chessground-examples

Usage examples for chessground
TypeScript
55
star
21

kaladin

Machine learning tool aimed at automating cheat detection using insights data.
PureBasic
48
star
22

flutter-chessground

Chessboard package for flutter
Dart
46
star
23

lila-gitpod

Lichess development environment
Shell
42
star
24

lila-search

Keep elasticsearch threads out of your web facing app, kids
Scala
39
star
25

lila-fishnet

Proxy between lila and fishnet move clients
Scala
37
star
26

lila-http

Handle some https://lichess.org/tournament load
Rust
34
star
27

lila-docker

Lichess local development using Docker Compose.
Rust
33
star
28

dartchess

Dart chess library for native platforms
Dart
32
star
29

api-ui

some web UIs on top of the Lichess API
TypeScript
17
star
30

lila-push

Web push microservice for lichess.org
Rust
17
star
31

lila-db-seed

Sample database data for lila development
Python
15
star
32

pgn-mule

Merge, filter, tweak and expose PGN sources
TypeScript
14
star
33

scalalib

Some convenience functions for my scala projects
Scala
13
star
34

leroyjenkins

Follow ban logs to manage ipsets
Rust
13
star
35

broadcaster

Broadcast your chess games on Lichess!
Vue
13
star
36

lila-ip2proxy

Webservice to query an IP2Proxy BIN database
Rust
11
star
37

papers

Papers that use Lichess data, study Lichess, or cite Lichess
TeX
9
star
38

swiss-maker

Script that creates regular swiss tournaments for a team.
TypeScript
8
star
39

lila-engine

Broker for communication between external engine providers and clients
Rust
7
star
40

lila-maven

distributing lichess jars
Shell
6
star
41

lila-stockfish-web

A home for stockfish wasms - because we care
Python
6
star
42

files

Public downloads
5
star
43

lila-deepq

deepquluru
Rust
4
star
44

lila-pwned

Webservice to query https://haveibeenpwned.com/ database dumps
Rust
3
star
45

lifat

large assets used by lila in production but optional for dev builds
JavaScript
3
star
46

ab-stub

JavaScript
1
star
47

fishnet-builder

Docker image for an environment that can produce fully static Stockfish builds
C
1
star
48

.github

1
star