> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/gym/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/gym/_mcp/server.

# nemo_gym.sandbox.providers.ecs_fargate.provider

ECS Fargate sandbox provider.

Adapts :mod:`engine` (one stateful `EcsFargateSandbox` per sandbox) to Gym's `SandboxProvider`
contract: per-sandbox engine state lives in `SandboxHandle.raw` and the provider methods delegate
to it. The model endpoint is reached directly from the sandbox, or via the SSH reverse tunnel when
`outside_endpoints` are supplied through `spec.provider_options`.

## Module Contents

### Classes

| Name                                                                                        | Description                                                   |
| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| [`EcsFargateProvider`](#nemo_gym-sandbox-providers-ecs_fargate-provider-EcsFargateProvider) | Run sandboxes as AWS ECS Fargate tasks behind an SSH sidecar. |

### Functions

| Name                                                                                                        | Description                                                                                  |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| [`_apply_spec_overrides`](#nemo_gym-sandbox-providers-ecs_fargate-provider-_apply_spec_overrides)           | Apply per-sandbox `SandboxSpec` requests (readiness/TTL/resources) onto the provider config. |
| [`_engine_spec`](#nemo_gym-sandbox-providers-ecs_fargate-provider-_engine_spec)                             | -                                                                                            |
| [`_outside_endpoints`](#nemo_gym-sandbox-providers-ecs_fargate-provider-_outside_endpoints)                 | -                                                                                            |
| [`_sidecar_config`](#nemo_gym-sandbox-providers-ecs_fargate-provider-_sidecar_config)                       | -                                                                                            |
| [`_volumes`](#nemo_gym-sandbox-providers-ecs_fargate-provider-_volumes)                                     | -                                                                                            |
| [`engine_config_from_mapping`](#nemo_gym-sandbox-providers-ecs_fargate-provider-engine_config_from_mapping) | Build an `EcsFargateConfig` from provider kwargs.                                            |

### API

```python
class nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider(
    config: typing.Any = {}
)
```

Run sandboxes as AWS ECS Fargate tasks behind an SSH sidecar.

```python
nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider.aclose() -> None
```

async

```python
nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider.close(
    handle: nemo_gym.sandbox.providers.base.SandboxHandle
) -> None
```

async

```python
nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider.create(
    spec: nemo_gym.sandbox.providers.base.SandboxSpec
) -> nemo_gym.sandbox.providers.base.SandboxHandle
```

async

```python
nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider.download_file(
    handle: nemo_gym.sandbox.providers.base.SandboxHandle,
    source_path: str,
    target_path: pathlib.Path
) -> None
```

async

```python
nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider.exec(
    handle: nemo_gym.sandbox.providers.base.SandboxHandle,
    command: str,
    cwd: str | None = None,
    env: dict[str, str] | None = None,
    timeout_s: int | float | None = None,
    user: str | int | None = None
) -> nemo_gym.sandbox.providers.base.SandboxExecResult
```

async

```python
nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider.status(
    handle: nemo_gym.sandbox.providers.base.SandboxHandle
) -> nemo_gym.sandbox.providers.base.SandboxStatus
```

async

```python
nemo_gym.sandbox.providers.ecs_fargate.provider.EcsFargateProvider.upload_file(
    handle: nemo_gym.sandbox.providers.base.SandboxHandle,
    source_path: pathlib.Path,
    target_path: str
) -> None
```

async

```python
nemo_gym.sandbox.providers.ecs_fargate.provider._apply_spec_overrides(
    cfg: nemo_gym.sandbox.providers.ecs_fargate.engine.EcsFargateConfig,
    spec: nemo_gym.sandbox.providers.base.SandboxSpec
) -> nemo_gym.sandbox.providers.ecs_fargate.engine.EcsFargateConfig
```

Apply per-sandbox `SandboxSpec` requests (readiness/TTL/resources) onto the provider config.

`SandboxResources.cpu` is in vCPUs; Fargate task CPU is in 1024-unit increments. GPU is not
supported on Fargate.

```python
nemo_gym.sandbox.providers.ecs_fargate.provider._engine_spec(
    spec: nemo_gym.sandbox.providers.base.SandboxSpec
) -> nemo_gym.sandbox.providers.ecs_fargate.engine.SandboxSpec
```

```python
nemo_gym.sandbox.providers.ecs_fargate.provider._outside_endpoints(
    spec: nemo_gym.sandbox.providers.base.SandboxSpec
) -> list[nemo_gym.sandbox.providers.ecs_fargate.engine.OutsideEndpoint]
```

```python
nemo_gym.sandbox.providers.ecs_fargate.provider._sidecar_config(
    yaml_sidecar: typing.Any,
    ssm_ssh: dict[str, typing.Any]
) -> nemo_gym.sandbox.providers.ecs_fargate.engine.SshSidecarConfig | None
```

```python
nemo_gym.sandbox.providers.ecs_fargate.provider._volumes(
    spec: nemo_gym.sandbox.providers.base.SandboxSpec
) -> list[nemo_gym.sandbox.providers.ecs_fargate.engine.VolumeMount]
```

```python
nemo_gym.sandbox.providers.ecs_fargate.provider.engine_config_from_mapping(
    config: dict[str, typing.Any]
) -> nemo_gym.sandbox.providers.ecs_fargate.engine.EcsFargateConfig
```

Build an `EcsFargateConfig` from provider kwargs.

When `region` is given but `cluster` is omitted, infrastructure is auto-discovered from SSM;
explicit kwargs always win over SSM.