Model or dataset
OpenPipe/ART avatar
OpenPipe/ART

OpenPipe ART: GRPO Training for Multi-Step Agents

Agent Reinforcement Trainer: train multi-step agents for real-world tasks using GRPO. Give your agents on-the-job training. Reinforcement learning for Qwen3.6, GPT-OSS, Llama, and more!

10,722 stars983 forksPythonApache-2.0

At a glance

What is it?
ART is an Apache-2.0 Python framework that wraps GRPO training around agent rollouts, with a self-hosted path and a managed W&B Training backend. The interesting part is the harness, not the algorithm; the constraint is that you supply the environment and the reward.
Who is it for?
Adopt ART if you already have a runnable agent loop and a reward you can compute in code, and you want GRPO without writing the trainer. Do not adopt it if your task has no programmatic reward, if your rollouts need more wall-clock time than a single training step can tolerate, or if you cannot run or pay for an inference cluster at concurrency.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap ART fills between an agent demo and a trained agent

Most agent projects stop at a working loop: the model calls a tool, reads the result, calls another tool. That loop is a prompt, and a prompt does not improve when it fails. ART's stated purpose is to let LLMs learn from experience, and the mechanism it picks is GRPO, group relative policy optimization, applied to multi-step agent trajectories rather than single-turn answers. The audience is narrow and identifiable: Python developers who already have an agent that runs, and who can score its output numerically. If you cannot write a function that returns a number for a finished episode, ART has nothing to optimize against. The README frames this as an ergonomic harness for integrating GRPO into any Python application, which is a fair description of the scope. It is not a dataset tool, not an evaluation suite, and not an agent framework. It sits between your agent and a trainer.

How GRPO fits around an agent rollout

GRPO compares completions within a group and uses the relative ranking to weight updates, which removes the need for a separate value model. Applied to agents, the unit being compared is a full trajectory: every tool call, every observation, every intermediate decision. That has a direct consequence for cost. A single-turn GRPO setup samples several completions of one prompt; an agentic setup samples several complete episodes, each of which may involve many model calls and many environment steps. The README's notebook table shows the range of what counts as an episode here: searching emails with RULER, playing 2048, solving Temporal Clue, playing Codenames, driving the NWS MCP server. These are environments with discrete state and checkable outcomes, which is exactly the shape GRPO needs. The framework's job is to hold the group, collect the rewards, and hand the relative signal to the trainer. Your job is the environment and the reward, and that is where nearly all the engineering time goes.

TrainableModel and Backend: the two objects you actually touch

The README's serverless example is the clearest view of the API surface. You construct art.TrainableModel with four arguments: project, name, run_name, and base_model, for example "Qwen/Qwen3.6-27B". You then construct a backend, in that example ServerlessBackend(api_key="your_wandb_api_key"), and call model.register(backend). Everything else in the loop is your code. This is a deliberately small surface, and it is the strongest argument for the library: the integration point is registration plus a reward, not a rewrite of your agent. The same example imports from art.serverless.backend, which tells you the serverless path is a distinct module rather than a flag on a shared backend. If you plan to self-host, expect to implement or configure a different Backend class, and expect the failure modes to differ: with serverless, the failure is an API error or a quota; with self-hosted, it is GPU memory and rollout scheduling.

Two ways to run it, and what each one costs you

The managed path is W&B Training, described in the README as Serverless RL and as the first publicly available service for flexibly training models with reinforcement learning. The README attributes three figures to it: 40% lower cost from multiplexing on a shared inference cluster, 28% faster training from scaling to 2000+ concurrent requests across many GPUs, and instant deployment of every checkpoint via W&B Inference. Those numbers come from the project's own marketing copy, not from an independent measurement, and the README gives no methodology, no baseline, and no hardware description behind them. Treat them as vendor claims. The self-hosted path is the Apache-2.0 library itself, and the README's local notebooks (Tic Tac Toe, Codenames) are the reference for it. The trade is straightforward: serverless removes the GPU provisioning problem and adds an API key, a dependency on a third-party service, and a per-request cost. Self-hosted removes the service dependency and adds back everything the serverless copy lists as a benefit.

Where ART is the wrong tool

The first wrong-tool case is reward design. The notebook list is heavy on games and search tasks because win conditions and retrieval accuracy are cheap to compute. If your agent's quality is judged by a human, or by a model acting as a judge, you are not in ART's target case, and you should be honest about that before installing anything. The second case is latency. GRPO needs a group of completed episodes before it can compute a relative advantage, so your slowest rollout sets the pace of every training step, and a group multiplies that. A task where one episode takes many minutes of real-world waiting will make training throughput painful regardless of which backend you pick. The third case is inference capacity. The serverless copy promises 2000+ concurrent requests; a self-hosted setup has to serve the same concurrency from your own GPUs while the trainer is also resident, which is a capacity planning problem the library does not solve for you. The fourth is version churn. Releases in the supplied list run v0.5.16, v0.5.17, then v0.5.19 across roughly five months, with a gap between v0.5.17 in March and v0.5.19 in August. That is an actively moving 0.5.x line, and the serverless module in particular is tied to an external service whose API can change independently of the library.

How this differs from verl and TRL

The closest comparison is verl, a general RL library for LLMs, and TRL, which ships GRPO and other trainers in the Hugging Face stack. Both are broader than ART and less opinionated about what a training sample is. TRL's GRPO trainer expects prompt and completion data, and you are responsible for turning agent trajectories into that shape, including the multi-turn structure and the per-turn rewards if you want them. verl targets large-scale RL with a heavier distributed stack and a steeper configuration surface. ART's difference is the harness: it takes the agent loop as the unit and provides the registration and backend plumbing around it, so the amount of glue between your environment and the trainer is smaller. The cost of that convenience is that you inherit ART's abstractions and its backends. If you need custom advantage estimation, unusual rollout batching, or a training topology ART does not expose, a general library will let you build it and ART will not.

Maintenance, licence, and what to verify before you commit

ART is Apache-2.0, which permits commercial use, modification, and redistribution, and includes an explicit patent grant. It also requires that you preserve the licence and notice files and state significant changes. That is the standard shape of a permissive licence, and it is a better fit for a company embedding the library than a copyleft alternative would be. It is not legal advice; if you are redistributing ART inside a product, have counsel read the NOTICE handling. On maintenance, the repository is not archived and the last push is recent relative to the release history, but the version line is 0.5.x, which conventionally signals pre-1.0 API stability. The serverless example in the README imports from art.serverless.backend, a path that did not necessarily exist in earlier releases, so pin the version you develop against and read the release notes for v0.5.17 and v0.5.19 before upgrading. The concrete first step is to run the 2048 or Tic Tac Toe notebook unmodified, confirm the training loop completes end to end on your hardware or your API key, and then swap in your own reward function and check that rewards vary within a group before you spend GPU hours on a real task.

Editorial conclusion

Adopt ART if you already have a runnable agent loop and a reward you can compute in code, and you want GRPO without writing the trainer. Do not adopt it if your task has no programmatic reward, if your rollouts need more wall-clock time than a single training step can tolerate, or if you cannot run or pay for an inference cluster at concurrency. Before committing, run one notebook unchanged, then replace only the reward function and confirm the score distribution is not constant across the group; a flat group gives GRPO no gradient. Check the Backend implementation you plan to use against the version in v0.5.19, since the serverless backend and the local path are separate code paths with separate failure modes.

Official sources

  1. License: Apache-2.0
  2. OpenPipe/ART on GitHub
  3. Project website
  4. README
  5. Releases
Community notes

Community notes