> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> Configure sandbox resources, images, and environment settings.

<Note>
  The examples on this page omit `auth`. To authenticate with your W\&B API key, install `cwsandbox[wandb]` and pass `auth=AuthStrategy.WANDB` to `Sandbox.run()`, `Sandbox()`, or `Sandbox.session()`. See [Get started](/products/sandboxes/serverless/get-started).
</Note>

This tutorial shows you how to configure a sandbox at startup by passing options to `Sandbox.run()`. It's for developers who have already created a basic sandbox and want to control the container image, resource allocation, and pre-populated files for their workload.

## Pass configuration to `Sandbox.run()`

Configuration options control how the sandbox is provisioned. Pass them as keyword arguments directly to `Sandbox.run()`:

```python theme={"system"}
from cwsandbox import Sandbox

with Sandbox.run(
    container_image="python:3.11",
    max_lifetime_seconds=300,
    tags=["my-app"],
) as sandbox:
    sandbox.exec(["python", "--version"]).result()
```

## Resources

Configure CPU and memory to match your workload's needs and avoid over-provisioning or under-provisioning. Use `ResourceOptions` to set requests and limits:

```python theme={"system"}
from cwsandbox import ResourceOptions, Sandbox

with Sandbox.run(
    resources=ResourceOptions(
        requests={"cpu": "2", "memory": "2Gi"},
        limits={"cpu": "2", "memory": "2Gi"},
    ),
) as sandbox:
    sandbox.exec(["python", "compute.py"]).result()
```

`ResourceOptions` uses [Kubernetes resource syntax](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/):

| Resource | Format | Examples |
| - | - | - |
| CPU | Cores or millicores | `"1"`, `"2"`, `"500m"` (0.5 CPU) |
| Memory | Bytes with unit suffix | `"512Mi"`, `"1Gi"`, `"2Gi"` |

## Mounted files

Mounted files let you ship configuration, scripts, or other static content into the sandbox before it starts, so your workload has what it needs the moment it runs. Pre-populate files at sandbox startup:

```python theme={"system"}
with Sandbox.run(
    mounted_files=[
        {"mount_path": "/app/config.json", "file_content": b'{"debug": true}'},
        {"mount_path": "/app/script.py", "file_content": b"print('hello')"},
    ]
) as sandbox:
    sandbox.exec(["python", "/app/script.py"]).result()
```

Each entry takes `mount_path`, the absolute path inside the sandbox, and `file_content`, the file's contents as bytes. A `str` is encoded as UTF-8 for you.

Mounted files are read-only. Use `write_file()` for files that need modification.

## Next steps

You now have a sandbox that starts with the container image, resource allocation, and pre-mounted files your workload requires.

For reusable configuration across multiple sandboxes, use `SandboxDefaults`. See the [sandbox configuration guide](../guides/sandbox-configuration) for all `ResourceOptions` fields, GPU resources, QoS classes, and config-library interop.
