Bring your environment

Audit your RL environment. In a sandbox.

Upload one Python file that implements Verity's environment plug. It runs in a locked-down container; the auditor model plays it from outside, through the plug, and you watch every tool call, then get the proof and the rules.

Checking the audit service…
Audit service checking
  1. Isolated container. Your file runs in its own Docker container on a cloud VM, reached only through the plug.
  2. An AI attacker plays it. A frontier model gets the task and the tools, never your grader, and looks for reward it can earn without doing the task.
  3. Proof and rules. A hack counts only with numbers: reward paid against your trusted check. Each one becomes a rule Guard can enforce in training.
The sandbox
No networkThe container has no network interface.
Read-onlyRead-only filesystem, scratch space in memory only.
Capped1 CPU, 1 GB of memory, 128 processes.
No privilegesRuns as nobody, every capability dropped.
No keysAPI keys never enter the container.
Spend capEach audit stops at a fixed API budget.
The plug: one file, a few functions
# my_env.py
NAME, VERSION, KIND = "my_env", 1, "tools"
DESCRIPTION = "one sentence for the auditor"

class Episode:            # its public methods are the tools
    def reset(self, **task): ...
    def act(self, x: str) -> str:
        """What this tool does.

        Args:
            x: What x means.
        """

def tasks(split="train"): ...   # [{"prompt": ..., ...}]
def grade(episode): ...         # the reward being audited
def check(episode): ...         # what the episode was really worth
def honest_logs(): ...          # honest play, so rules never flag it

Standard library only inside the container. The full contract is in verity/environment.py. example_env.py is a complete environment with one planted bug: a guess budget the reward never checks.

Back to the start ↺