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

# Pre-integrated sandboxes

> Run tasks with local or remote environments supported by Harbor.

Harbor runs each trial in an isolated environment. Local runtimes are convenient
for development; remote providers free local resources and support higher
concurrency.

<Note>
  Harbor calls sandboxes "**environments**" in the CLI (`--env`/`-e`) and job
  configuration (`environment.type`). It's a bad name, we know. But it's too late to change now.
</Note>

## Run with a cloud sandbox

Sandboxes are not installed by default. Install one sandbox, such as
[Daytona](https://www.daytona.io/):

```bash theme={"system"}
uv tool install "harbor[daytona]"
```

Replace `daytona` with [all sandbox options](#available-sandboxes) to install
that sandbox. To install **all** pre-integrated sandboxes, use:

```bash theme={"system"}
uv tool install "harbor[cloud]"
```

Local runtimes (e.g. `docker`) do not require optional Harbor Python dependencies, but
their runtime or CLI must still be installed.

<Tabs>
  <Tab title="CLI">
    ```bash theme={"system"}
    export DAYTONA_API_KEY="..."
    harbor run \
      -d terminal-bench@2.0 \
      -a codex -m openai/gpt-5.6-sol \
      -e daytona \
      -n 32
    ```
  </Tab>

  <Tab title="Config">
    ```json config.json theme={"system"}
    {
      "n_concurrent_trials": 32,
      "environment": {
        "type": "daytona"
      },
      "agents": [
        {
          "name": "codex",
          "model_name": "openai/gpt-5.6-sol"
        }
      ],
      "datasets": [
        {
          "name": "terminal-bench",
          "version": "2.0"
        }
      ]
    }
    ```

    ```bash theme={"system"}
    export DAYTONA_API_KEY="..."
    harbor run --config config.json
    ```
  </Tab>
</Tabs>

<Accordion title="Alternative: run Harbor from source">
  When running Harbor from source, `--extra daytona` installs Daytona's
  optional dependencies before running the command:

  ```bash theme={"system"}
  export DAYTONA_API_KEY="..."
  uv run --no-dev --extra daytona harbor run \
    -t hello-world/hello-world \
    -a codex -m openai/gpt-5.6-sol \
    -e daytona
  ```
</Accordion>

Harbor runs provider preflight checks when available. Otherwise, missing setup
is reported when the provider starts. **Important**: See [Environment variables](/jobs/environment-variables)
to configure provider credentials and control which variables enter the sandbox.

## Available sandboxes

These categories describe where a trial runs; they are documentation groupings,
not separate types in Harbor's API.

* **Local runtimes** execute containers on the machine running Harbor.
* **Remote sandboxes** run through a provider API or infrastructure that you
  configure.

<Accordion title="Sandbox names and install extras" defaultOpen>
  **Local runtimes:** `docker` (default), `podman`, `apple-container`,
  `singularity`

  **Remote sandboxes:**
  [`ack`](https://www.alibabacloud.com/en/product/kubernetes) (uses kubeconfig),
  [`beam`](https://www.beam.cloud/),
  [`blaxel`](https://blaxel.ai/sandbox), [`cua-cloud`](https://cua.ai/)
  (`cua` extra),
  [`cwsandbox`](https://docs.coreweave.com/products/sandboxes),
  [`daytona`](https://www.daytona.io/), [`e2b`](https://e2b.dev/),
  [`ec2`](https://aws.amazon.com/ec2/),
  [`gke`](https://cloud.google.com/kubernetes-engine),
  [`hf-sandbox`](https://huggingface.co/docs/huggingface_hub/main/guides/sandbox),
  [`hyperbrowser`](https://www.hyperbrowser.ai/), [`islo`](https://islo.dev/),
  [`langsmith`](https://www.langchain.com/langsmith/sandboxes),
  [`modal`](https://modal.com/products/sandboxes), [`novita`](https://novita.ai/),
  [`opensandbox`](https://www.opensandbox.ai/),
  [`openshift`](https://www.redhat.com/en/technologies/cloud-computing/openshift)
  (uses the `oc` CLI), [`runloop`](https://runloop.ai/),
  [`skypilot`](https://skypilot.ai/) (early access),
  [`tensorlake`](https://www.tensorlake.ai/),
  [`use-computer`](https://use.computer/), [`vercel`](https://vercel.com/sandbox),
  [`runta`](https://runta.com/docs/integrations/harbor/),
  [`prime`](https://github.com/PrimeIntellect-ai/prime/tree/main/packages/prime-sandboxes),
  [`mosaic`](https://sandbox.mosaicos.com/),
  [`smol`](https://smolmachines.com/)
</Accordion>

## Common Sandbox cli options

| Flag | Purpose | Default |
| - | - | - |
| `-e`, `--env` | Select a built-in sandbox or custom import path. | `docker` |
| `--ek`, `--environment-kwarg` | Pass a provider-specific constructor option. Repeatable. | None |
| `-n`, `--n-concurrent` | Limit concurrent trials. | `4` |
| `--force-build`, `--no-force-build` | Rebuild or reuse the task environment. | `--no-force-build` |
| `--delete`, `--no-delete` | Delete or retain the sandbox after the trial. | `--delete` |
| `--cpus`, `--memory` | Choose `auto`, `limit`, `request`, `guarantee`, or `ignore`. | `auto` |
| `--override-cpus`, `--override-memory-mb`, `--override-storage-mb`, `--override-gpus`, `--override-tpu` | Override task resources for this run. | Task configuration |
| `--env-file` | Load host credentials and other environment variables. See [Environment variables](/jobs/environment-variables). | None |

Provider lifetime rules can override `--no-delete`. Run `harbor run --help` for
all environment options; each provider also defines its own
`--environment-kwarg` values.

## Provider capabilities

Capabilities vary by sandbox and can depend on the task mode or provider
settings.

<Accordion title="Task and hardware capabilities">
  | Capability | Supported environments |
  | - | - |
  | Docker Compose | `docker`, `podman`, `daytona`, `modal`, `ec2`, `gke`, `islo`, `langsmith`, `novita`, `blaxel`, `beam`, `hyperbrowser`, `vercel`, `runta`, `prime` |
  | GPUs | `daytona`, `modal`, `gke`, `beam`, `opensandbox`, `prime`, `docker` |
  | TPUs | `gke` |
  | Windows | `docker`, `daytona`, `cua-cloud`, `use-computer` |
  | Host-mounted logs | `docker`, `podman`, `apple-container`, `singularity` |
  | Stream over SSH | `daytona`, `docker`, `modal`, `tensorlake` |

  Modal GPU support depends on its runtime settings. GKE exposes GPUs and TPUs
  only for single-container tasks. Prime GPUs are also single-container only.
  `cua-cloud` and `use-computer` require their
  Windows platform setting.
</Accordion>

<Accordion title="Network capabilities">
  | Capability | Supported environments |
  | - | - |
  | Disable internet | `docker`, `podman`, `daytona`, `e2b`, `modal`, `runloop`, `langsmith`, `ec2`, `gke`, `novita`, `islo`, `tensorlake`, `cwsandbox`, `blaxel`, `opensandbox`, `beam`, `skypilot`, `hyperbrowser`, `vercel`, `runta`, `prime`, `mosaic`, `smol` |
  | Exact hostnames | `docker`, `podman`, `daytona`, `e2b`, `modal`, `runloop`, `langsmith`, `novita`, `islo`, `tensorlake`, `blaxel`, `beam`, `hyperbrowser`, `vercel`, `runta`, `prime`, `mosaic`, `smol` |
  | Wildcard hostnames | `docker`, `podman`, `daytona`, `e2b`, `modal`, `runloop`, `langsmith`, `novita`, `blaxel`, `hyperbrowser`, `vercel`, `runta`, `prime` |
  | IPv4 addresses | `docker`, `podman`, `daytona`, `e2b`, `modal`, `novita`, `tensorlake`, `beam`, `hyperbrowser`, `prime`, `mosaic`, `smol` |
  | IPv6 addresses | `docker`, `podman`, `beam`, `smol` |
  | IPv4 CIDRs | `docker`, `podman`, `daytona`, `modal`, `novita`, `tensorlake`, `beam`, `hyperbrowser`, `prime`, `mosaic`, `smol` |
  | IPv6 CIDRs | `docker`, `podman`, `beam`, `smol` |
  | Runtime policy changes | `docker`, `podman`, `daytona`, `e2b`, `modal`, `novita`, `islo`, `beam`, `hyperbrowser`, `vercel`, `runta`, `prime` |

  Docker and Podman require Harbor's egress-control support. Daytona, Modal,
  Novita, Blaxel, and Vercel allowlists are single-container only. GKE can
  disable internet only in Compose mode. Islo runtime changes require its
  default gateway configuration.
</Accordion>

<Accordion title="CPU and memory capabilities">
  | Capability | Supported environments |
  | - | - |
  | CPU limit | `docker`, `podman`, `apple-container`, `modal`, `gke`, `openshift`, `skypilot`, `cwsandbox`, `opensandbox`, `ec2`, `runta`, `prime`, `smol` |
  | CPU request | `daytona`, `e2b`, `modal`, `runloop`, `gke`, `openshift`, `novita`, `islo`, `tensorlake`, `cwsandbox`, `beam`, `skypilot`, `hyperbrowser`, `vercel`, `runta`, `mosaic` |
  | Memory limit | `docker`, `podman`, `apple-container`, `modal`, `gke`, `openshift`, `skypilot`, `cwsandbox`, `opensandbox`, `ec2`, `runta`, `prime`, `smol` |
  | Memory request | `daytona`, `e2b`, `modal`, `runloop`, `gke`, `openshift`, `novita`, `islo`, `tensorlake`, `cwsandbox`, `blaxel`, `beam`, `skypilot`, `hyperbrowser`, `vercel`, `runta`, `mosaic` |

  A **limit** is a hard ceiling. A **request** reserves or selects capacity.
  `guarantee` requires both. When a provider declares resource capabilities,
  Harbor rejects unsupported policies before trials start.
</Accordion>

The task's [environment definition](/tasks/environment) remains
the same when switching providers, subject to these capabilities.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.