Welcome to MASA-Safe-RL, the Multi and Single Agent (MASA) Safe Reinforcement Learning library. The primary goal of this library is to develop a set of common constraints and environments for safe reinforcement learning research, built on top of the popular gymnasium interface. We span, CMPDs, probabilistic constraints, Reach-Avoid and LTL-Safety (DFA) properties.
The library is in very early stage development and we greatly appreciate and encourage feedback from the community about what they would like to see implemented. Currently we provide a set of basic tabular algroithms for safe RL, but we provide a modular and resuable framework for developing more complex algorithms and constraints.
If you use MASA-Safe-RL in your research please cite it in your publications.
@misc{Goodall2025MASASafeRL,
title = {{MASA-Safe-RL}: Multi and Single Agent Safe Reinforcement Learning},
author = {Goodall, Alexander W. and Adalat, Omar and Hamel De-le Court, Edwin and Belardinelli, Francesco},
year = {2025},
howpublished = {\url{https://github.com/sacktock/MASA-Safe-RL/}},
note = {GitHub repository}
}Python 3.12+ is required (3.13 recommended).
- Install conda, e.g., via anaconda.
- Clone the repo:
git clone https://github.com/sacktock/MASA-Safe-RL.git
cd MASA-Safe-RL- Create a conda virtual environment:
conda env create --name masa --file conda-environment.yaml
conda activate masa- Install dependencies:
pip install -e .uv sync installs only base dependency package from the repository root.
Easiest way to install all dependencies: All dependency groups (docs and GPU support for CUDA13): uv sync --all-groups --no-group cuda12.
Alternatively, uv sync --all-groups --no-group cuda13 if your system only supports CUDA 12.
More minimal ways of installing dependency groups:
- For building docs, use
uv sync --group docsfrom the repository root. - Adding GPU support for Jax:
uv sync --group cuda13(orcuda12if CUDA 13 is not supported by your device)
MASA-Safe-RL is now available on PyPI: MASA-Safe-RL.
pip install -U MASA-Safe-RLMASA-Safe-RL relies on JAX for GPU acceleration. If you are only interested in the gymnasium wrappers and constraints API then you do not need to complete the following steps.
macOS and Windows: we recommend JAX with CPU. No further action is required if you correctly followed the earlier steps.
- Linux x86_64/aarch64 and Windows WSL2 x86_64: We strongly recommend using Ubuntu 22.04 or similar, jax and jaxlib should already be installed. You need to reinstall JAX based on your cuda driver compatibility. Do not use the
-Uoption here as it may break earlier dependencies!
pip install "jax[cuda13]"pip install "jax[cuda12]"Alternatively with uv,
uv sync --group cuda12uv sync --group cuda13- You can run masa with the prebuilt CLI:
masa run --env-id bridge_crossing --algo ppo --seed 0- You can run examples from the
\examplesfolder via:
masa example prob_shield_exampleDocumentation uses the root pyproject.toml and uv.lock, so you can build and serve it directly from the repository root.
uv run zensical build --strictThe built site will be available at site/index.html.
For live reload while editing, run:
uv run zensical serveThe project currently uses the following directories for local storage:
.cache/- for persisting transition matrices to avoid recomputationvideos/- stores recorded videos from training runs at configured intervals or played runs using notebooks/runs/- persisted data and metrics of training runsbenchmarks/- stores results frommasa benchmarkruns
We use pre-commit for formatting and linting (Ruff, yamlfmt, taplo, mdformat, plus local checks). Install the git hook once per clone:
pip install pre-commit # or: uv tool install pre-commit
pre-commit installIt then runs automatically on every git commit (run manually with pre-commit run --all-files). CI runs the same pinned hooks on changed files via pre-commit/action, alongside the test suite.
MASA-Safe-RL is primarliy managed by Alex Goodall and Omar Adalat. For correspondence in the early stages of the library we prefer you contact us directly via email (a.goodall22@imperial.ac.uk & o.adalat24@imperial.ac.uk), rather than raising issues on GitHub directly.
MASA-Safe-RL is released under Apache License 2.0.
