• Stars
    star
    708
  • Rank 63,953 (Top 2 %)
  • Language
    Rust
  • License
    GNU General Publi...
  • Created over 8 years ago
  • Updated 4 months ago

Reviews

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

Repository Details

Distributed Stockfish analysis for lichess.org

fishnet: distributed Stockfish analysis for lichess.org

crates.io Docker Build

Installation

  1. Request your personal fishnet key: https://lichess.org/get-fishnet

  2. Install and run the fishnet client.

    Download standalone binary

    Select the binary for your platform from the latest release and run it.

    # After download:
    mv fishnet-v2.7.1-x86_64-unknown-linux-musl fishnet
    chmod +x fishnet
    ./fishnet --auto-update

    Useful commands

    ./fishnet configure              # Rerun config dialog
    ./fishnet systemd --auto-update  # Print a .service file
    ./fishnet --help                 # List commands and options

    Other installation methods: From source, Docker, Kubernetes, OpenShift

  3. Pick an update strategy.

    Automatic updates

    Run with --auto-update as recommended above.

    Subscribe to release announcements

    With a GitHub account, you can watch this repository (can be set to release announcements only). See the top right corner on this page.

Video introduction

Watch @arex explain fishnet.

Video introduction

FAQ

Which engine does fishnet use?

fishnet uses Stockfish (hence the name) and Fairy-Stockfish for chess variants.

What are the requirements?

Available for 64-bit Intel and AMD ARMv8 / Silicon
Linux x86_64-unknown-linux-musl aarch64-unknown-linux-musl
Windows x86_64-pc-windows-gnu.exe
macOS x86_64-apple-darwin aarch64-apple-darwin
FreeBSD build from source
  • Needs Linux or an operating system from around 2019 or later
  • Will max out the configured number of CPU cores
  • Uses about 64 MiB RAM per CPU core
  • A small amount of disk space
  • Low-bandwidth network communication with Lichess servers (only outgoing HTTP requests, so probably no firewall configuration required, IPv4 not required)

Is my CPU fast enough?

Almost all processors will be able to meet the requirement of ~2 meganodes in 6 seconds. Clients on the faster end will automatically be assigned analysis jobs that have humans waiting for the result (the user queue, as opposed to the system queue for slower clients).

Why does my client remain idle?

Your client may remain idle if fishnet estimates that another client would be able to complete the next batch more quickly, or if the client has been configured to join the queue only if a backlog is building up. By standing by, you're still contributing to reliability by providing redundancy, and also to the potential maximum throughput in case requests peak.

What happens if I stop my client?

Feel free to turn your client on and off at any time. By default, the client will try to finish any batches it has already started. On immediate shutdown, the client tries to inform Lichess that batches should be reassigned. If even that fails, Lichess will reassign the batches after a timeout.

Will fishnet use my GPU?

No, Stockfish is a classical alpha-beta engine. The neural network evaluation of Stockfish NNUE works efficiently on CPUs.

Is fishnet secure?

To the best of our knowledge. All engine input is carefully validated.

Note that you implicitly trust the authors and the GitHub and Amazon S3 infrastructure when running with --auto-update. You can mitigate this by running fishnet as an unprivileged user.

cargo-crev is used to review the trustworthiness of dependencies. cargo-auditable is used to embed dependency meta data into binaries.

Is there a leaderboard of contributors?

No, sorry, not publicly. It would incentivize gaming the metrics.

Can I autoscale fishnet in the cloud?

There is currently no ready-made solution, but an API for monitoring the job queue status is provided.

Protocol

Sequence diagram

See protocol.md for details. Also supports SSLKEYLOGFILE for inspection at runtime.

License

fishnet is licensed under the GPLv3+. See LICENSE.txt or ./fishnet license for the full license text.

More Repositories

1

lila

โ™ž lichess.org: the forever free, adless and open source chess server โ™ž
Scala
15,513
star
2

lichobile

lichess.org mobile application
TypeScript
2,032
star
3

mobile

Lichess mobile app v2
Dart
1,316
star
4

chessground

Mobile/Web chess UI for lichess.org
TypeScript
1,011
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