Skip to content

lichess-org/stockfish-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

122 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

@lichess-org/stockfish-web

npmjs.com/package/@lichess-org/stockfish-web

WebAssembly builds for Stockfish.

This package is optimized for the lichess.org website, which needs multiple builds and chess variants. It is not straight-forward to load and use.

Check out https://github.com/nmrugg/stockfish.js for a simpler browser Stockfish.

Building

# Example: Clean and make all web targets
./build.py all clean

Use --cxx to override the default emcc flags which are -O3 -DNDEBUG --closure=1.

Use --ld to override default linker flags (--ld='-sENVIRONMENT=node' to target node).

Check ./build.py --help for the latest targets

To avoid installing or changing your emscripten version, use ./build-with-docker.sh or ./build-with-podman.sh:

# Example: Docker clean and make all targets for node as debug with SAFE_HEAP
./build-with-docker.sh --cxx='-O0 -g3 -sSAFE_HEAP' --ld='-sENVIRONMENT=node' all clean

# Example: clean and make dist targets for web with a preallocated pthread pool size of 8
./build.py --ld='-sENVIRONMENT=web,worker -sPTHREAD_POOL_SIZE=8' clean dist

./build.py downloads sources to the ./fishes folder then applies diffs from the ./patches folder. Edit the Stockfish sources within ./fishes. Contribute your edits via patch file

# Example: Update `sf_17.1.patch` with your source changes:
cd fishes/sf_17.1
git diff > ../../patches/sf_17.1.patch

Run locally on node

./build.py --ld='-sENVIRONMENT=node'
node ./src/wasm-cli.js ./sf_18.js
uci

Check the output of uci for the correct nnue names and download ones you don't have from https://tests.stockfishchess.org/nns

Now you'll have to load the nnues. (see ./src/wasm-cli.js).

big ./nn-c288c895ea92.nnue
small ./nn-37f18f62d772.nnue

The specific file names might change, so check the output of uci for the correct names.

Sources

sf_18_smallnet (Stockfish 18 with sscg13/threat-small)

sf_18 (Stockfish 18)

sf_dev (Stockfish dev-20260213-77d46ff6)

sf_17.1_smallnet (Stockfish 17.1 linrock 256)

sf_17.1 (Official Stockfish 17.1 release)

fsf_14 (Fairy-Stockfish 14)

Older repositories kept for compatibility

npmjs.com/package/stockfish-nnue.wasm

Stockfish 14 without dynamic import() in WebWorker.

stockfish.wasm and stockfish-mv.wasm

npmjs.com/package/stockfish.wasm npmjs.com/package/stockfish-mv.wasm

SF_classical (strongest handcoded eval) and multi-variant equivalent. No SIMD. No dynamic import() in WebWorker.

npmjs.com/package/stockfish.js

Stockfish 10 in pure JavaScript or WebAssembly without shared memory.

Sponsor this project

Packages

No packages published

Contributors 6