noahfarr/boonta

Python

8

130 commits

updated Oct 11, 2026

See the code

See what people are saying

SourceMessageScoreDate

distributed reinforcement learning in JAX (r/reinforcementlearning)

Hi guys, Over the last couple of weeks and months I’ve been working on an RL library in Jax since most of the existing codebases didn’t really scale to my workflow. Now it’s in a kind of presentable state, so I’d love some feedback if someone wants to take a look. GitHub:…

6

Oct 11, 2026

README

🏜️ boonta

Distributed reinforcement learning in JAX, built on the Podracer architectures.

boonta [ˈbuːn.tə]: the Boonta Eve Classic, the podrace Anakin Skywalker wins on Tatooine in The Phantom Menace.

The hangar, holding the config and the recipe, stands on boonta. The recipe builds a podracer, one of Anakin, Sebulba or Quadinaros, which holds a curriculum wrapping the algorithm (network, optimizer and more), the environment (vectorize around auto-reset around the game) and, for offline training, the dataset. Beside the track a grandstand watches the race: artisans along its wall craft checkpoints, metrics and videos, and loggers broadcast them from the tower on its roof.

Why boonta

boonta is built to scale reinforcement learning up, in compute and in models. Training plays thousands of environments at once, keeps every device busy and grows from one GPU to a cluster without touching the algorithm. Models scale the same way, from a small network learning CartPole from scratch to LLMs and VLAs fine-tuned as agents, all trained by the same algorithms. And because the algorithm, the environment and the training loop stay out of each other's way, offline data, multi-agent self-play and curricula slot in without rewriting anything.

Podracers

🏎️ Anakin is for JAX environments. Acting, stepping and learning compile into one program that runs on every device.

🔧 Sebulba is for slow or non-JAX environments. Actors collect rollouts on some devices while learners train on the rest.

📼 Quadinaros is for offline RL and BC. It trains on a fixed dataset and only steps the environment to evaluate.

In the hangar

Algorithms

Environments

Curricula

  • PLR replays the levels the agent learns most from
  • League trains against a pool of earlier policies, picked by PSRO meta-solvers

Install

boonta is not on PyPI. Install it from a checkout with uv:

git clone https://github.com/noahfarr/boonta && cd boonta
uv sync                  # the library
uv sync --extra hangar   # the library, plus Hydra to run the configs in hangar

The library never imports hangar, Hydra or OmegaConf. Environment suites that need their own packages come as extras too, such as craftax. uv sync installs exactly the extras it is given, so pass every one you use in one command, for example uv sync --extra hangar --extra craftax.

Guides

  • hangar: run training from the command line, config groups, several machines, sweeps
  • Podracers: the training loops, and which one to pick
  • Algorithms: the algorithm interface, and how to add an algorithm
  • Networks: heads, recurrent torsos and stacks, mixed precision
  • Environments: the environment interface, wrappers, and how to add an environment
  • Datasets: offline data for quadinaros, and how to add a dataset
  • Recipes: how a run is put together from its parts

noahfarr/boonta

Python

8

130 commits

updated Oct 11, 2026

See the code

See what people are saying

SourceMessageScoreDate

distributed reinforcement learning in JAX (r/reinforcementlearning)

Hi guys, Over the last couple of weeks and months I’ve been working on an RL library in Jax since most of the existing codebases didn’t really scale to my workflow. Now it’s in a kind of presentable state, so I’d love some feedback if someone wants to take a look. GitHub:…

6

Oct 11, 2026

README

🏜️ boonta

Distributed reinforcement learning in JAX, built on the Podracer architectures.

boonta [ˈbuːn.tə]: the Boonta Eve Classic, the podrace Anakin Skywalker wins on Tatooine in The Phantom Menace.

The hangar, holding the config and the recipe, stands on boonta. The recipe builds a podracer, one of Anakin, Sebulba or Quadinaros, which holds a curriculum wrapping the algorithm (network, optimizer and more), the environment (vectorize around auto-reset around the game) and, for offline training, the dataset. Beside the track a grandstand watches the race: artisans along its wall craft checkpoints, metrics and videos, and loggers broadcast them from the tower on its roof.

Why boonta

boonta is built to scale reinforcement learning up, in compute and in models. Training plays thousands of environments at once, keeps every device busy and grows from one GPU to a cluster without touching the algorithm. Models scale the same way, from a small network learning CartPole from scratch to LLMs and VLAs fine-tuned as agents, all trained by the same algorithms. And because the algorithm, the environment and the training loop stay out of each other's way, offline data, multi-agent self-play and curricula slot in without rewriting anything.

Podracers

🏎️ Anakin is for JAX environments. Acting, stepping and learning compile into one program that runs on every device.

🔧 Sebulba is for slow or non-JAX environments. Actors collect rollouts on some devices while learners train on the rest.

📼 Quadinaros is for offline RL and BC. It trains on a fixed dataset and only steps the environment to evaluate.

In the hangar

Algorithms

Environments

Curricula

  • PLR replays the levels the agent learns most from
  • League trains against a pool of earlier policies, picked by PSRO meta-solvers

Install

boonta is not on PyPI. Install it from a checkout with uv:

git clone https://github.com/noahfarr/boonta && cd boonta
uv sync                  # the library
uv sync --extra hangar   # the library, plus Hydra to run the configs in hangar

The library never imports hangar, Hydra or OmegaConf. Environment suites that need their own packages come as extras too, such as craftax. uv sync installs exactly the extras it is given, so pass every one you use in one command, for example uv sync --extra hangar --extra craftax.

Guides

  • hangar: run training from the command line, config groups, several machines, sweeps
  • Podracers: the training loops, and which one to pick
  • Algorithms: the algorithm interface, and how to add an algorithm
  • Networks: heads, recurrent torsos and stacks, mixed precision
  • Environments: the environment interface, wrappers, and how to add an environment
  • Datasets: offline data for quadinaros, and how to add a dataset
  • Recipes: how a run is put together from its parts