Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Prime Intellect


Verifiers: Environments for LLM Reinforcement Learning

Documentation • Environments Hub • PRIME-RL


Style Test Envs

News & Updates

  • [05/07/26] v0.1.14 is released, featuring the v1 Taskset/Harness API, shared eval and training config shape, model-family starter configs, OpenAI Responses and renderer-backed clients, per-turn timing, GEPA prompt artifacts, Lean guard markers, and release/infrastructure hardening.
  • [04/28/26] v0.1.13.dev8 is released, featuring per-rollout wall-clock timeouts for MultiTurnEnv, CLI timeout config, sandbox timeout propagation, and smaller CliAgentEnv and RLM fixes.
  • [04/17/26] v0.1.12 is released, featuring upstreamed opencode and RLM harnesses/tasksets, major RLMEnv improvements (context dropping, prompt builder, hardened transport), multi-worker env server support, expanded vf-tui capabilities, and richer eval configuration.
  • [03/12/26] v0.1.11 is released, featuring a unified client stack, major RLMEnv and env server reliability improvements, a substantially refined eval TUI, new pass@k and ablation sweep support, and bundled opencode environments.
  • [02/10/26] v0.1.10 is released, featuring OpenEnv and BrowserEnv integrations, resumed evals, improved rollout and token tracking, safer sandbox lifecycle behavior, refreshed workspace setup, and opencode harbor improvements.
  • [01/08/26] v0.1.9 is released, featuring a number of new experimental environment class types, monitor rubrics for automatic metric collection, improved workspace setup flow, improved error handling, bug fixes, and a documentation overhaul.
  • [11/19/25] v0.1.8 is released, featuring a major refactor of the rollout system to use trajectory-based tracking for token-in token-out training across turns, as well as support for truncated or branching rollouts.
  • [11/07/25] Verifiers v0.1.7 is released! This includes an improved quickstart configuration for training with prime-rl, a new included "nano" trainer (vf.RLTrainer, replacing vf.GRPOTrainer), and a number of bug fixes and improvements to the documentation.
  • [10/27/25] A new iteration of the Prime Intellect Environments Program is live!

Overview

Verifiers is our library for creating environments to train and evaluate LLMs.

Environments contain everything required to run and evaluate a model on a particular task:

  • A dataset of task inputs
  • A harness for the model (tools, sandboxes, context management, etc.)
  • A reward function or rubric to score the model's performance

Environments can be used for training models with reinforcement learning (RL), evaluating capabilities, generating synthetic data, experimenting with agent harnesses, and more.

Verifiers is tightly integrated with the Environments Hub, as well as our training framework prime-rl and our Hosted Training platform.

Getting Started

Ensure you have uv installed, as well as the prime CLI tool:

# install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# install the prime CLI
uv tool install prime
# log in to the Prime Intellect platform
prime login

To set up a new workspace for developing environments, do:

# ~/dev/my-lab
prime lab setup 

This sets up a Python project if needed (with uv init), installs verifiers (with uv add verifiers), creates the recommended workspace structure, and downloads useful starter files:

configs/
├── endpoints.toml      # OpenAI-compatible API endpoint configuration
├── rl/                 # Example configs for Hosted Training
├── eval/               # Example multi-environment eval configs
└── gepa/               # Example configs for prompt optimization
.prime/
└── skills/             # Bundled workflow skills for create/browse/review/eval/GEPA/train/brainstorm
environments/
└── AGENTS.md           # Documentation for AI coding agents
AGENTS.md               # Top-level documentation for AI coding agents
CLAUDE.md               # Claude-specific pointer to AGENTS.md

Alternatively, add verifiers to an existing project:

uv add verifiers && prime lab setup --skip-install

Environments built with Verifiers are self-contained Python modules. To initialize a fresh environment template, do:

prime env init my-env # creates a new template in ./environments/my_env

Add an explicit harness loader when the environment owns harness behavior:

prime env init my-env --with-harness

For OpenEnv integration, use:

prime env init my-openenv --openenv

Then copy your OpenEnv project into environments/my_openenv/proj/ and build the image with:

uv run vf-build my-openenv

This will create a new module called my_env with a basic environment template.

environments/my_env/
├── my_env.py           # Main implementation
├── pyproject.toml      # Dependencies and metadata
└── README.md           # Documentation

Environment modules should expose a load_environment function which returns an environment object. For simple legacy environments, this can still be a direct constructor:

# my_env.py
import verifiers as vf

def load_environment(dataset_name: str = 'gsm8k') -> vf.Environment:
    dataset = vf.load_example_dataset(dataset_name) # 'question'
    async def correct_answer(completion, answer) -> float:
        completion_ans = completion[-1]['content']
        return 1.0 if completion_ans == answer else 0.0
    rubric = vf.Rubric(funcs=[correct_answer])
    env = vf.SingleTurnEnv(dataset=dataset, rubric=rubric)
    return env

For new environments with reusable tasksets, toolsets, custom programs, or custom harnesses, use the v1 Taskset/Harness path:

# my_env.py
import verifiers as vf


class MyTasksetConfig(vf.TasksetConfig):
    system_prompt: vf.SystemPrompt = "Reverse text exactly."


class MyTaskset(vf.Taskset[MyTasksetConfig]):
    def load_tasks(self, split: vf.TaskSplit = "train") -> vf.Tasks:
        rows = [
            {
                "prompt": [{"role": "user", "content": "Reverse abc."}],
                "answer": "cba",
                "split": "train",
                "max_turns": 1,
            }
        ]
        return [row for row in rows if row["split"] == split]

    @vf.reward(weight=1.0)
    async def contains_answer(self, task, state) -> float:
        return float(task["answer"] in str(state.get("completion") or ""))


def load_taskset(config: MyTasksetConfig) -> MyTaskset:
    return MyTaskset(config=config)


def load_environment(config: vf.EnvConfig) -> vf.Env:
    """Loader pattern for all Taskset/Harness environments."""
    return vf.Env(
        taskset=vf.load_taskset(config=config.taskset),
        harness=vf.load_harness(config=config.harness),
    )

The child loader annotation defines the taskset config shape; root load_environment stays typed as vf.EnvConfig. See BYO Harness for the advanced v1 taskset/harness API. Reusable taskset and harness packages live in tasksets and harnesses. Install them with uv add "verifiers[packages]", or with the narrower verifiers[tasksets], verifiers[harnesses], and backend-specific extras. For example, Harbor task directories can run through the bundled OpenCode CLI harness with:

from harnesses import OpenCode, OpenCodeConfig
from tasksets import HarborTaskset, HarborTasksetConfig

env = vf.Env(
    taskset=HarborTaskset(config=HarborTasksetConfig(bundle_package=__name__)),
    harness=OpenCode(config=OpenCodeConfig()),
)

The same environment package is the unit used by evals and prime-rl. The trainer owns model, endpoint, sampling, and rollout count; v1-specific options stay on the taskset or harness config that owns them:

# configs/rl/my-v1-env.toml
model = "Qwen/Qwen3-30B-A3B-Instruct-2507"
max_steps = 100
batch_size = 256
rollouts_per_example = 8

[sampling]
max_tokens = 4096

[[env]]
id = "my-env"

[env.harness]
max_turns = 1

[env.taskset]
system_prompt = "Reverse text exactly."

[env.taskset.scoring.contains_answer]
weight = 1.0
prime env install my-env

For self-managed training launch commands, use the prime-rl documentation.

To run a local evaluation with any OpenAI-compatible model, do:

prime eval run my-env -m openai/gpt-5-nano # run and save eval results locally

Evaluations use Prime Inference by default; configure your own API endpoints in ./configs/endpoints.toml.

View local evaluation results in the terminal UI:

prime eval view

To publish the environment to the Environments Hub, do:

prime env push --path ./environments/my_env

To run an evaluation directly from the Environments Hub, do:

prime eval run primeintellect/math-python

Documentation

Environments — Create datasets, rubrics, and custom multi-turn interaction protocols.

BYO Harness — Build v1 Taskset/Harness environments with custom tools, sandboxes, users, and custom programs.

Evaluation - Evaluate models using your environments.

Training — Train models in your environments with reinforcement learning.

Development — Contributing to verifiers

API Reference — Understanding the API and data structures

FAQs - Other frequently asked questions.

Citation

Originally created by Will Brown (@willccbb).

If you use this code in your research, please cite:

@misc{brown_verifiers_2025,
  author       = {William Brown},
  title        = {{Verifiers}: Environments for LLM Reinforcement Learning},
  howpublished = {\url{https://github.com/PrimeIntellect-ai/verifiers}},
  note         = {Commit abcdefg • accessed DD Mon YYYY},
  year         = {2025}
}

Release files for verifiers 0.1.15.dev178

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for verifiers 0.1.15.dev178
File Size Uploaded
verifiers-0.1.15.dev178.tar.gz 747.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for verifiers 0.1.15.dev178
File Interpreter ABI Platform
verifiers-0.1.15.dev178-py3-none-any.whl Python 3 none any Details

Total release size: 1.4 MB

Release files / verifiers-0.1.15.dev178.tar.gz

Download URL verifiers-0.1.15.dev178.tar.gz
Size 747.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b54747141acd8c62d0ccc26b08a727f7d1b8f206fe70ddaeb8a4d994bfe70f8d
BLAKE2b-256 checksum
How to use checksums
0a02a44b3c610355f668965459b14fd0f813fe975e073be90d788b071389d1bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 11, 2026.

Transparency log

Release files / verifiers-0.1.15.dev178-py3-none-any.whl

Download URL verifiers-0.1.15.dev178-py3-none-any.whl
Size 666.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
893db6d1d07fb597ec3dd59708174dc2afdb17fd449f6a62d807982ca18cdbd5
BLAKE2b-256 checksum
How to use checksums
c5c6312100f181cd679717bb95b47e95b306bb5a7b8b4759251601c4d17484af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 11, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

This release

0.1.15.dev178 This release

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page