To compile, run make
. The required networks will be downloaded automatically (and validated).
This requires make
and a recent enough rust version (see the MSRV) installed via rustup
(the official way).
Development of Monty is facilitated by montytest. Functional patches are required to pass on montytest, with an STC followed by an LTC test. Nonfunctional patches may be required to pass non-regression test(s) if there are any concerns.
The main engine code is found in src/, containing all the search code and network inference code.
There are a number of other crates found in crates/:
montyformat
- Core chess implementation
- Policy/value data formats
- All other crates depend on this
datagen
- Intended to be ran on montytest, there is no need to run it locally (unless testing changes)
train-value
- Uses bullet
train-policy
- Uses bullet & extends it with custom operations
Monty is free and distributed under the GNU Affero General Public License (AGPL v3). Essentially, this means you are free to do almost exactly what you want with the program, including distributing it among your friends, making it available for download from your website, selling it (either by itself or as part of some bigger software package), or using it as the starting point for a software project of your own.
The only real limitation is that whenever you distribute Monty in some way, including distribution over a network (such as providing access to Monty via a web application or service), you MUST always include the license and the full source code (or a pointer to where the source code can be found) to generate the exact binary you are distributing. If you make any changes to the source code, these changes must also be made available under AGPL v3.