Community nodes

Lend your engine to the community.

A node lends the chess engines of one machine — Stockfish, and optionally Leela Chess Zero with the human-like Maia networks — to DaisyChess players. It connects out to the hub over one secure WebSocket: no open port, no domain, no TLS certificate, and it works behind NAT.

Private and pool nodes

Private node

Only the people you give a player token can use it — your own devices, your club, your friends. A token can list several of your nodes and, if you like, fall back to the shared pool.

Pool node

You also donate part of your machine to players without a node of their own. You decide how much: sessions, threads and the share of the node the pool may use. Switch it off at any time.

Get started

Run a node in three steps.

You need Docker with Compose on Linux, macOS or Windows (amd64 or arm64).

  1. Create the node in the portal

    Open the operator portal, log in with your lichess account, create a node and copy its node token (dcn_…). It is shown once — keep it secret.

  2. Start it

    Copy the example configuration, put in your token and start the container:

    git clone https://github.com/refaustria/daisychess && cd daisychess
    cp docker/node.env.example docker/.env.node
    
    # edit docker/.env.node:
    #   HUB_URL=wss://hub.daisychess.org/link
    #   NODE_TOKEN=dcn_…        from the portal
    #   NODE_POOL=off           on = also share with the pool
    
    docker compose -f docker/docker-compose.node.yml --env-file docker/.env.node up -d
    docker compose -f docker/docker-compose.node.yml logs -f node
    # → "link: registered with the hub"
  3. Hand out player tokens

    Create player tokens (dc1_…) in the portal. A setup link or QR code puts a token straight into the DaisyChess app on any device — it lands in Settings, nothing to type.

Hardware

Small machines welcome.

A Raspberry Pi, an old laptop or a corner of a home server is plenty to help a few players.

Minimum

1 CPU and 512 MB of memory. 2 or more CPUs and 1 GB are recommended.

Sizing

Each concurrent search uses MAX_THREADS cores and about MAX_HASH_MB + 80 MB of memory. Keep sessions × threads within your CPUs.

Architectures

amd64 (any x86-64 CPU; AVX2 is used when present) and arm64 — Raspberry Pi 4/5, Apple Silicon, Graviton. Maia is optional: MAIA=off on very small machines.

Fair pool

Honest results, shared fairly.

  • Pool access needs a pool token, with limits on concurrent sessions and search size, and a daily engine-time budget (30 minutes by default).
  • The hub re-runs a small random sample of pool searches on its own engines and compares the answers.
  • A node whose answers keep disagreeing is suspended from the pool for 24 hours; after repeated episodes it is banned from the pool. Its private tokens keep working.
  • When the pool is full, it says so — nobody is entitled to a slot, and nobody can hog one.

Built to be safe to run

  • Outbound only — no published port, nothing listens on your host.
  • Locked-down container — read-only, non-root, no capabilities.
  • Graceful — on stop, running searches finish first.
  • Yours to switch off — stop the container or revoke the node.

Privacy

What operators can see.

Your node receives the chess positions and search settings of the people who use it — that is how analysis works. It does not receive their IP addresses, names, accounts or PGN headers. For pool searches the node cannot tell who the player is.

As an operator you agree not to log, keep or misuse those positions. Players always see which node and operator a search runs on, and get a notice before their first search on a pool node:

“Searches in the shared pool run on volunteers' computers. The operator of that computer can see the positions you analyse, but not who you are.”

Read the privacy policy and the terms for operators before you start.

Ready to lend a hand?

Create your first node in the portal — it takes a minute.