Before You Start
- Create an account in the Daytona Dashboard, then create a key on the API keys page.
- Set
DAYTONA_API_KEY. Self-hosted or multi-target deployments can also setDAYTONA_API_URLandDAYTONA_TARGET. - Do not commit credentials. Use a secret store for CI.
api_key, api_url, and target in a private configuration file. Environment variables are generally more convenient for shells and CI.
Validate the Configuration with run
This example uses SWE-bench Verified with mini-swe-agent. It selects one task through sample_ids, and the matched recipe selects its Daytona-compatible image and workspace:
agentcompass run check. See agentcompass run for model endpoint and other shared options.
Daytona also supports agentcompass launch. Put shared Daytona settings under defaults.environment in the orchestration file, or request-specific settings under requests[].environment; write id: daytona and the Daytona parameters at the same level. See the launch mapping rules.
Parameter Reference
Pass parameters with--env-params, or place them under environments.daytona in a configuration file.
The example above continues to use Daytona credentials from environment variables, while the recipe supplies the task image. Add the following option to request 2 vCPUs, 4 GiB of memory, and 8 GiB of disk for each image-based sandbox:
resources applies only to the image startup path. AgentCompass does not send it when snapshot is explicit or when Daytona uses its default snapshot because no startup source is set.
Connection and Credentials
| Field | Default | Meaning |
|---|---|---|
api_key | DAYTONA_API_KEY | Daytona API key. When unset, AgentCompass reads the environment variable; JWT authentication is an alternative. |
api_url | DAYTONA_API_URL | Daytona API root URL. If the environment variable is also unset, the SDK defaults to https://app.daytona.io/api. |
target | DAYTONA_TARGET | Target identifier configured in Daytona that selects the sandbox execution location or region. When unset, Daytona uses the organization’s default region. |
jwt_token | DAYTONA_JWT_TOKEN | JWT authentication token. JWT authentication also requires organization_id. |
organization_id | DAYTONA_ORGANIZATION_ID | Organization ID used for JWT authentication. |
connection_pool_maxsize | 250 | Maximum simultaneous HTTP connections opened by the Daytona SDK. It must be a positive integer; set JSON null to remove the cap. |
api_key, or both jwt_token and organization_id.
Image and Startup
| Field | Default | Meaning |
|---|---|---|
image | Unset | Registry image name, such as python:3.12. Daytona creates the sandbox from this image, and this is the only startup path to which resources applies. |
snapshot | Unset | Name of an Active Daytona snapshot in the current organization. The snapshot determines the resource shape; AgentCompass does not send resources. |
dockerfile | Unset | Reserved field; the current implementation rejects it. Build and publish the image first, then set image. |
compose_file | Unset | Reserved field; the current implementation does not support Docker Compose / DinD startup. |
language | python | Daytona code-execution language: python, typescript, or javascript. It selects the default snapshot when no startup source is set; a custom image must still contain the task runtime. |
os_user | Daytona default | OS user for commands in the sandbox. It must exist in the image or snapshot; when unset, that source supplies its default user. |
image, snapshot, dockerfile, and compose_file; the only usable startup sources today are image and snapshot. If neither is set, Daytona uses the default snapshot for language. A Benchmark that requires a prebuilt task environment still needs a compatible image or snapshot from a recipe or explicit parameters.
Identity and Metadata
| Field | Default | Meaning |
|---|---|---|
name | Generated | Sandbox name. A fixed name can conflict during concurrent creation or while a previous sandbox still exists. |
labels | {} | String key-value mapping written at creation time, such as {“batch”:“nightly”}, for metadata such as ownership or evaluation batch. |
Workspace and Environment Variables
| Field | Default | Meaning |
|---|---|---|
default_workspace_root | workspace/ | Default path used by the Harness when the Benchmark supplies no task working directory. AgentCompass ensures that it exists after creation. |
env_variables | {} | Environment-variable mapping, such as {“DEBUG”:“1”}. Names must match [A-Za-z_][A-Za-z0-9_]*; values are converted to strings, passed at sandbox creation, and merged into later command environments. |
Resources
| Field | Default | Meaning |
|---|---|---|
resources | {} | Daytona resource object, sent only when the sandbox is created from image. Its supported child fields are listed below. |
resources.cpu | 1 vCPU | Requested vCPU count as a positive integer. Alias: resources.cpus. The organization configuration determines the available maximum. |
resources.memory | 1 GiB | Requested memory in GiB as a positive integer. The organization configuration determines the available maximum. |
resources.disk | 3 GiB | Requested disk space in GiB as a positive integer. Alias: resources.storage. The organization configuration determines the available maximum. |
resources.gpu | Unset | Requests a GPU. Daytona currently supports at most one GPU per sandbox, so set this to 1. Also set ephemeral=true or auto_delete_interval=0. Alias: resources.gpus. The current adapter does not support gpu_type, so it cannot select a GPU model. |
resources keys to Daytona. Values must also fit the organization’s per-sandbox limits; use the Daytona Dashboard and current official documentation as the source of truth for those limits.
Network
| Field | Default | Meaning |
|---|---|---|
network_block_all | Unset | Daytona-native outbound-firewall switch. true blocks all outbound access; false disables sandbox-level block-all but cannot override organization policy. |
network_allow_list | [] | Array of allowed external IPv4 addresses or CIDRs, such as [“203.0.113.10”,“10.0.0.0/8”]. Other external IP destinations are blocked. Bare IPv4 addresses become /32; the maximum is 10 entries, and IPv6 is unsupported. |
domain_allow_list | [] | Array of allowed external domains, such as [“api.example.com”,“*.example.org”]. Other external domains are blocked. The maximum is 20 entries; do not include schemes, ports, or paths. |
network_allow_list and domain_allow_list cannot both be non-empty, and network_block_all=true cannot be combined with either list. These fields affect initial creation only when the Environment’s shared baseline policy is public. To keep setup, agent execution, and verification rules consistent, prefer shared network policies and do not configure both approaches.
Daytona’s organization policy always takes precedence over sandbox settings. Under Daytona’s current tier rules, Tier 1 and Tier 2 cannot override organization restrictions at the sandbox level; Tier 3 and Tier 4 can customize or update them dynamically. Phase transitions also require credentials with write permission and an installed SDK that provides update_network_settings.
Lifecycle and Timeouts
| Field | Default | Meaning |
|---|---|---|
auto_stop_interval | 15 | Non-negative integer minutes without Daytona activity before a running sandbox is stopped; 0 disables auto-stop. An internal background process alone may not refresh the timer. |
auto_archive_interval | Unset | Non-negative integer minutes continuously stopped before automatic archive. When unset, Daytona uses its default (currently 7 days for container sandboxes); 0 uses the current 30-day maximum. Container sandboxes only. |
auto_delete_interval | Unset | Minutes continuously stopped before automatic deletion. Unset disables it; 0 deletes immediately on stop. AgentCompass accepts non-negative integers only. |
ephemeral | false | When true, Daytona sets auto_delete_interval to 0, so the sandbox is deleted as soon as it stops; auto_archive_interval therefore has no effect. |
delete_on_close | true | AgentCompass-only close behavior: true calls Daytona delete; false calls stop instead. |
sandbox_start_timeout | 60 | Positive seconds to wait for Daytona to create and start the sandbox. In AgentCompass, 0 does not mean unlimited; it falls back to 60 seconds. |
operation_timeout | 1800 | Positive integer seconds used when a command, file operation, or network update has no more specific timeout. |
delete_on_close=false differs from --keep-environment: the former still performs normal close but calls Daytona stop. If ephemeral=true or auto_delete_interval=0, Daytona still deletes the sandbox when it stops. The latter skips this AgentCompass close, but it does not bypass Daytona auto-stop, archive, or deletion rules. See Run Controls.
Parameter Sources
- Run
agentcompass config docs env daytonato see the fields, types, and defaults supported by the installed version. - Daytona Async Python SDK: client configuration and create parameters
- Daytona Async Python SDK: Resources type
- Daytona Sandboxes: resources, ephemeral sandboxes, and lifecycle
- Daytona Snapshots
- Daytona Network Limits
Provider-Specific Behavior
- When a snapshot is used, resources come from the snapshot or Daytona configuration;
resourcesis not applied. - If a benchmark requires a prebuilt task image and neither a recipe nor explicit parameters supply
imageorsnapshot, AgentCompass fails before creation. - Phase network transitions depend on the installed Daytona SDK. AgentCompass reports a clear error when that SDK cannot update network settings dynamically.
