Skip to main content
An environment pairs an agent configuration with sandbox resources. It answers two questions: which agent attempts the task, and what machine does it get? Because environments are the variable in an experiment, you’ll typically create one per configuration you want to compare — “Claude Code + latest Sonnet” vs “Codex + latest GPT”, for example — and run them against the same tasks.

Agent configuration

The harness runs headless inside the sandbox, exactly as a developer would run it in their own terminal. Its session logs are captured and parsed into a unified transcript regardless of which harness produced them, so runs are comparable across harnesses.

Sandbox resources

Every run gets a fresh, isolated Linux sandbox:
  • CPU: 1–4 cores
  • Memory: 1–8 GB
  • Disk: 1–10 GB
  • GPU (optional): T4, L4, A10G, A100, or H100
Runs without a GPU execute on the default sandbox provider; requesting a GPU automatically routes the run to GPU-backed infrastructure. The sandbox is created at run start, initialized with the task’s files, commands, and secrets, archived after the run, and destroyed.

Scheduling

Environments can run on a recurring schedule (every 7 or 14 days). Scheduled runs execute the environment’s tasks automatically, which is the easiest way to monitor agent experience continuously — a docs change that breaks agent onboarding shows up in the next scheduled run instead of the next manual experiment.

Choosing what to compare

Common comparison setups:
  • Model sweep — same harness, different models, to see which models handle your product well
  • Harness sweep — same model family across Claude Code, Codex, and OpenCode, to find harness-specific friction
  • Before/after — identical environments run as separate iterations around a docs or API change

Working with environments from the CLI

The simplest way to create an environment is to declare it in an environment.json beside a task and run the directory — see Run a task from a directory. tpc sim run creates the environment, links it, and queues runs in one command. To manage environments directly, the agent configuration is passed as inline JSON or a @file (JSON or TOML):
To request a GPU sandbox, add it to sandboxResources — for example "gpu": "A100", "gpuCount": 1.

Secrets from the CLI

Secrets are set per environment and injected as environment variables at run time. Values are never printed back by the CLI.