Skip to main content
The environment is the Linux system where the agent works. Install dependencies and seed files here; keep hidden tests in tests/.

Choose an image source

environment/Dockerfile
Evolve builds the image when you publish the dataset. The build context is environment/, so COPY paths are relative to that directory.

Working directory and user

The working directory resolves in this order:
For a prebuilt image, set workdir explicitly when it needs a path other than /app. Use [agent].user to select an existing username. Otherwise, the parsed Dockerfile’s USER applies, with root as the fallback. Use root or 0 for root; other numeric UIDs and user:group declarations are rejected. The named user must already exist in the image, and the image must include su. Evolve prepares the user’s home before running the agent.
task.toml

Start a service

An image’s ENTRYPOINT runs before the agent starts. CMD is not used as the task command; keep-alive entrypoints such as sleep infinity do not start a service. Add a healthcheck when the agent must wait for a service:
task.toml
The agent starts after the check exits 0. Exhausted retries fail the trial before the agent runs. The values above are the defaults; only command is required.
A separate verifier cannot reuse an agent image that starts a service. Give it its own verifier image, or use shared verification.

Add MCP tools

Declare servers in task.toml. Evolve adds them to the harness’s MCP configuration.
A remote URL must be reachable under the task’s network policy. A local process must be installed in the image; downloading it with npx or uvx needs network access. stdio processes inherit the task environment variables and do not accept a separate env field.

Supported scope

Evolve runs headless Linux tasks. It does not provide a desktop, display server, Windows environment, or Apptainer runtime.

Configure the task

Set resources, timeouts, and network access.