Skip to main content
Selecting a provider and passing Environment parameters are separate operations: the provider chooses the Environment implementation that executes the task, while its parameters control how that Environment is created and run. Set only the fields you need to change, and let provider defaults or an applicable Recipe supply the rest. Environment parameters must belong to the public schema shown by agentcompass config docs env <provider-id>. Unknown fields, including misspellings and all provider-specific options, raise an unknown-parameter error. Configure outbound access through the shared network policies; adapters generate the corresponding native API options internally. All providers share one schema. The provider ID selects an implementation and its supported capabilities; it does not add public parameters. setup includes image, workdir, build_timeout_seconds, and os. evaluation_setup uses the same structure for a fresh verifier. Resource, network, and environment-variable fields are also shared. Host credentials are configured through the adapter’s existing environment variables or SDK configuration, outside task execution settings.
AgentCompass matches recipes automatically. A normal evaluation does not require setting or modifying a recipe; configure one manually only when a benchmark page names an alternative, troubleshooting requires restricted matching, or your team loads custom adaptation logic.

Choose a Provider and Input Method

All of the following methods can provide Environment parameters. Choose one based on whether the values apply only to the current evaluation or should be reused by other runs or programs:

agentcompass run

Use --env <id> to select a provider. When it is omitted, AgentCompass uses host_process. Run agentcompass list env to see the provider IDs available in the current installation. --env-params accepts a JSON object for the Environment parameters of this evaluation. Matching fields override configuration-file values:

Configuration File

Write reusable provider parameters directly under environments.<id>. Do not add a params wrapper:
Select the same provider and load the file when running the evaluation:

Python SDK Single Evaluation

The SDK accepts a Python dictionary, so the parameters do not need to be encoded as a JSON string:

agentcompass launch and SDK Multiple Evaluations

In a launch orchestration, id selects the provider and the remaining fields are written directly under environment:
Each evaluation request can override these defaults in its own environment section. The Python SDK’s OrchestrationSpec uses the same field structure. See the agentcompass launch mapping rules and Python SDK multiple-evaluation requests.
When an orchestration mixes providers, do not place provider-specific parameters in defaults.environment. A request that overrides environment.id still inherits and merges the other fields in defaults.environment. Put provider-specific values in each requests[].environment instead.

Write Nested Fields

Provider parameters can be strings, numbers, booleans, objects, or lists. In a parameter reference, resources.cpu means the cpu field inside the resources object; it is not a flat key named resources.cpu. The following four forms are equivalent. Each requests 2 vCPUs and 6 GiB of memory from Daytona. The CLI accepts a JSON object:
A configuration file preserves the nested YAML structure:
The Python SDK accepts a nested dictionary:
A launch orchestration places provider parameters beside id while retaining their nested shape:
Objects merge recursively by field, while a later scalar or list replaces the earlier value in full. For example, if a configuration file sets resources.cpu: 2 and resources.memory_mb: 6144, then a request that passes only {"resources":{"memory_mb":8192}} resolves to 2 vCPUs and 8192 MiB of memory. Do not add a params wrapper, and do not write a field path as {"resources.cpu":2}. See the selected provider’s parameter reference for its nested fields, units, and accepted values.

Understand Field Ownership

Environment parameters contain two kinds of fields: With every input method, shared setup and network fields and provider fields are written at the same level, without another params wrapper. In a configuration file, for example, all are written directly under environments.docker.

Inspect Fields and Resolved Configuration

Show the provider-specific fields, types, and defaults declared by one provider in the current installation:
Show the result of merging built-in defaults with a configuration file:
config show includes only built-in values and configuration-file layers. It does not include extra CLI, SDK, or orchestration fields for a particular run, or the final Environment settings that a Recipe adds before a task starts. See agentcompass config for the complete command behavior.

How Environment Parameters Take Effect

Environment parameters are not read once from a single source. They are built in these stages: The following command does not set a Docker image. The matching SWE-bench Verified Recipe derives the image and task workspace from the sample, so selecting the provider is usually enough:
Without a matching Recipe, you must still provide the provider’s required fields, such as the task image for Docker. A Recipe is also not a universal “explicit parameters always win” rule: built-in Recipes usually preserve compatible explicit image and resource settings, but they may still adjust workspace, network, or execution settings required by the Benchmark or Harness. Pass Environment parameters only when you intend to change the default behavior. Valid values still depend on the provider and are documented on its provider page and by config docs.
The overall evaluation timeout, concurrency, and Environment startup rate are run controls. Fields such as Modal’s timeout and OpenSandbox’s lifecycle_seconds limit the lifetime of one sandbox and are not evaluation timeouts.
Native adapters may require particular variable values to launch their runner or translate canonical model/execution settings. If a declared environment variable conflicts with one of these requirements, the command fails before launch and reports only the variable name. Change the corresponding Model, Harness, or execution setting instead of overriding its generated variable. Matching values are accepted. This adds no new CLI field. Internal Python runners preserve your PYTHONPATH where they can bootstrap their imports; the mini-SWE-agent CLI still requires its generated module directory and rejects a conflicting PYTHONPATH.