selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

fishnet logo

Self-host fishnet

v2.15.1

Distributed Stockfish analysis client for Lichess

ReleaseOpen SourceGPL-3.0
Updatedlast week
LanguageRust
Setup difficultyEasy
Stars
935
CPU
64-bit Intel/AMD or ARMv8, ~2 meganodes in 6 seconds
RAM
64 MiB per CPU core
Storage
A small amount of disk space
Docker
niklasf/fishnet
Install with Docker

What is fishnet?

fishnet is a volunteer computing client that runs Stockfish and Fairy-Stockfish chess engines on your hardware to provide distributed analysis for lichess.org. Users request a personal API key from lichess.org, then run the client via standalone binary, Docker, Docker Compose, Kubernetes, or OpenShift. The client automatically fetches analysis jobs, runs them locally using configured CPU cores, and submits results back to Lichess. It supports automatic updates, runs on Linux, Windows, macOS, and FreeBSD (x86_64 and ARM64), uses roughly 64 megabytes of memory per CPU core, and communicates via outgoing HTTPS only. The project is licensed under GPL-3.0-or-later and written in Rust.

Should you self-host fishnet?

fishnet scores 60/100 on selfhost.directory (how scoring works) and ranks #2 of 3 in Distributed Computing. It has 935 GitHub stars.

It shipped 8 stable releases in the past year. The latest, v2.15.1, came out on 21 October 2026. New versions land roughly every 5 weeks.

Setup is easy: most people get it running in one sitting. An official Docker image is available. It is GPL-3.0-licensed and written mostly in Rust.

Its closest alternative on selfhost.directory is BOINC (62/100, 2 494 stars). It scores higher overall, so compare the two before you pick. See fishnet vs BOINC side by side.

Features

  • Automatic Updates
  • Distributed chess analysis
  • Graceful Shutdown
  • Low Resource Usage
  • Multi-Platform Support
  • Multiple installation methods
  • Stockfish and Fairy-Stockfish engines

fishnet README

How to install fishnet

Install fishnet with Docker

Docker Engine
Environment variables
KEY, CORES, ENDPOINT, USER_BACKLOG, SYSTEM_BACKLOG, MAX_BACKOFF, CPU_PRIORITY, STATS_FILE, KEY_FILE

docker run -it
--name fishnet
--read-only
--tmpfs /tmp:rw,nosuid,nodev,exec
--cap-drop=ALL
--security-opt="no-new-privileges=true"
-e KEY=abcdef
niklasf/fishnet:2

Runs with n-1 cores by default, use CORES env var to override

How to configure fishnet

  • CORESn-1Number of CPU cores to use (default: n-1)

    Number of CPU cores to use (default: n-1)

  • CPU_PRIORITYCPU priority/nice value

    CPU priority/nice value

  • ENDPOINTServer endpoint URL

    Server endpoint URL

  • KEYPersonal fishnet API key from lichess.org/get-fishnet

    Personal fishnet API key from lichess.org/get-fishnet

  • KEY_FILEPath to file containing the API key

    Path to file containing the API key

  • MAX_BACKOFFMaximum backoff time

    Maximum backoff time

  • STATS_FILEPath to stats output file

    Path to stats output file

  • SYSTEM_BACKLOGSystem backlog threshold

    System backlog threshold

  • USER_BACKLOGUser backlog threshold

    User backlog threshold

fishnet releases & version history

FAQ

Can I autoscale fishnet in the cloud?

No ready-made solution exists, but an API for monitoring job queue status is provided in the protocol documentation.

Is there a leaderboard of contributors?

No public leaderboard exists, as it would incentivize gaming the metrics.

Is fishnet secure?

To the best of the authors' knowledge, all engine input is validated. Running with --auto-update trusts GitHub and Amazon S3 infrastructure; mitigate by running as unprivileged user. Uses cargo-crev and cargo-auditable for dependency review.

Why do I need a key?

The API key traces analysis back to your Lichess account. One key can run multiple instances. Private instances don't need a key.

What happens if I stop my client?

You can turn the client on/off anytime. By default it finishes started batches and informs Lichess to reassign work; if that fails, Lichess reassigns after a timeout.

Why does my client remain idle?

The client may stay idle if fishnet estimates another client would complete the batch faster, or if configured to join only when backlog builds up. Idle clients still provide redundancy and potential throughput.

Is my CPU fast enough?

Almost all processors can meet the requirement of ~2 meganodes in 6 seconds. Faster clients get user-requested analysis jobs; slower ones get system queue jobs.

Which engine does fishnet use?

fishnet uses Stockfish for standard chess and Fairy-Stockfish for chess variants.

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…