Practical overview
When it fits
Use Maia when the goal is to model human move choices, create a human-like chess practice opponent, or work with code and weights for chess behavior research. The linked Lichess bots provide a direct route to playing against selected models; local use requires a host engine such as lc0.
Who it is for
- Chess players looking for practice against linked Lichess bots with different target ratings.
- Developers who want to load Maia weights with lc0 or use its Python move-prediction code.
- Researchers studying human chess behavior or training models from chess games.
Documented uses
- Play against a linked Maia bot targeting a particular rating.
- Load Maia weights into lc0 and obtain moves using the documented one-node setting.
- Use the Python backend and python-chess wrapper for move prediction.
- Convert PGN games into training data and train a Maia model.
Requirements & limits
The repository is public and specifies the GPL-3.0 license. The README links to Maia bots on Lichess and model weights in the repository.
- Maia weights are model components, not complete chess engines; local play requires lc0.
- The documented Maia move-setting approach disables searching and uses a one-node limit.
- The repository's PGN training pipeline requires pgn-extract, trainingdata-tool and Python packages, and processing can be CPU- and I/O-intensive.
- The linked Lichess bots target 1100, 1500 and 1900 ratings; their opening books are noted as being in development.
- Maia-2 and Maia-3 have separate linked code projects, so their workflows are distinct from the instructions for this repository.
Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.
Prepare a Maia model for local play with lc0
Load a Maia model weight file into Leela Chess Zero and configure the documented one-node move setting.
Before you start
- A Maia model weight file, such as maia-1100.pb.gz
- Leela Chess Zero (lc0), installed and configured according to its quickstart instructions
Steps
Download a Maia weight file from the repository's model links.
Load the file with lc0, following the lc0 quickstart.
Disable searching by using a one-node limit; the repository gives the command below as the UCI example.
go nodes 1
Expected outcome
The Maia weights are loaded in lc0, with the documented one-node setting for selecting a move.
Guide limitations
- The Maia weights are not a complete chess framework or engine on their own; they need lc0 as a host.
- This guide covers the documented loading and move-setting steps, not connection to a particular chess interface.
Prepare PGN games for Maia training
Convert PGN chess games into the training and validation data format used by the repository's training workflow.
Before you start
- PGN chess game files
- The repository's required Python packages from requirements.txt
- pgn-extract and trainingdata-tool available on the system path
Steps
Set up the repository environment; the maia_env.yml Conda environment is optional, while required packages are listed in requirements.txt.
Add pgn-extract and trainingdata-tool to the system path.
Run
move_prediction/pgn_to_trainingdata.sh PGN_FILE_PATH OUTPUT_PATHwith the input and output paths replaced by the relevant paths.
Expected outcome
The script creates training and validation data under the chosen output path, ready for the documented configuration stage.
Guide limitations
- Game processing is described as intensive in CPU and input/output work.
- This guide covers data preparation only; training requires configuring move_prediction/maia_config.yml and running the training script.
Sources & review
Source record details
- Source availability
- Active
- Sources checked
- 13 October 2026
- Original website title
- CSSLab/maia-chess · Official homepage title · retained in its source language

