Skip to main content
Each trial runs in its own cloud sandbox. Use -e to request E2B, Daytona, or Modal; the default is Daytona.

Task requirements come first

Evolve checks the requested provider against the task’s image, resources, network policy, Compose services, and GPUs. A fallback is recorded as sandbox_provider_degrade on the trial. The requested provider on the job and the actual provider on a trial can differ. If no provider can satisfy the task, Evolve rejects the configuration.
Inspect the per-task provider verdicts before starting a larger run. A compatible declaration does not guarantee immediate provider capacity.

Supported configurations

Network allowlist kinds and resource ceilings also differ. The live meta() document publishes these constraints. Daytona disk and GPU limits depend on the platform’s live provider quota.
A temporary capacity shortage can put a trial back in the queue even with --max-retries 0. Capacity waits are bounded and separate from ordinary retry attempts.

Your own provider account

Add --own-infra to run trial sandboxes in your E2B, Daytona, or Modal account. The CLI reads the provider’s credentials from your shell, or uses stored secrets when a variable is absent.
This option requires server support. If the server returns feature_unsupported, omit --own-infra to use Evolve’s account.
Daytona also accepts DAYTONA_API_URL on a daytona.io host and DAYTONA_TARGET of us (default) or eu. Custom regions are not supported.
Credentials from your machine are saved as secrets on first use. Either delivery mode works; the keys never enter a sandbox. The CLI reports whether each key came from your machine or stored secrets. The job records sandbox_account: own. Its regrades retain that attribution, but analysis, checks, and regrade sandboxes run on Evolve’s account. The SDK equivalent is sandbox_credentials on jobs().start(). You can access your provider’s sandboxes, including hidden tests and reward files. This access affects the trust others can place in the scores.
Deleting a credential makes the remaining trials of jobs using it fail. Those jobs do not switch to Evolve’s account.If your shell holds a different value from the stored secret, the request is refused. Unset the variable to use the stored key. To rotate it, wait for your own-account jobs to finish, delete the stored key with evolve secrets delete, then run with the new value.
Evolve ends each sandbox when its trial ends or is stopped. If normal cleanup fails, the provider lifetime applies: the trial time budget plus a margin on E2B and Modal, or Daytona’s auto-stop followed by deletion.Reusable images remain in your account:You can delete these in your provider console. A later job rebuilds what it needs.

Images and startup

Dataset publication prepares task images. A provider may also need to prepare its own cached image or snapshot before the first trial. That first start can take longer than later trials using the cache. Resources come from the task’s task.toml. See task configuration for defaults and how to request CPUs, memory, disk, and GPUs.

GPU costs

GPU compute is shown as an estimate, separate from model spend: An unavailable estimate includes unpriced_reason. Do not add this estimate to the metered model cost and present it as the same charge.

Analysis and checks

These operations also use sandboxes. Choose their provider with -e on evolve analyze or evolve check, or --analyze-provider for analysis attached to a run. Their default is Daytona, but server defaults can differ. Read the resolved provider through the SDK defaults.
Last modified on November 9, 2026