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

# praisonai-sandbox

> Standalone sandbox backends for PraisonAI — Docker, E2B, Modal, Daytona, Novita, Sandlock, SSH, subprocess

`praisonai-sandbox` is the standalone Tier-2 package that holds the sandbox backends extracted from the `praisonai` wrapper. Agents reach these backends through `SandboxManager`; you can also install the package on its own for a minimal, sandbox-only footprint.

```mermaid theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
graph LR
    Agents[praisonaiagents\nCore SDK + protocols] --> Sandbox[praisonai-sandbox\nBackends]
    Sandbox --> Wrapper[praisonai\nFull wrapper]

    classDef core fill:#189AB4,stroke:#7C90A0,color:#fff
    classDef pkg fill:#8B0000,stroke:#7C90A0,color:#fff
    classDef wrapper fill:#10B981,stroke:#7C90A0,color:#fff

    class Agents core
    class Sandbox pkg
    class Wrapper wrapper
```

## Quick Start

<Steps>
  <Step title="Install">
    ```bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
    pip install "praisonai-sandbox[docker]"
    ```

    <Tip>
      `pip install praisonai` already bundles `praisonai-sandbox` — install the standalone package only for sandbox-only environments.
    </Tip>
  </Step>

  <Step title="Import a backend">
    ```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
    from praisonai_sandbox import DockerSandbox
    from praisonaiagents.sandbox import SandboxConfig

    config = SandboxConfig.docker("python:3.12-slim")
    sandbox = DockerSandbox(image=config.image, config=config)
    ```
  </Step>
</Steps>

***

## Install Matrix

| Extra      | Command                                     | Pulls                                              |
| ---------- | ------------------------------------------- | -------------------------------------------------- |
| *(base)*   | `pip install praisonai-sandbox`             | `praisonaiagents`, `rich`, `typer`, `click`        |
| `docker`   | `pip install "praisonai-sandbox[docker]"`   | `docker>=7.0.0`                                    |
| `e2b`      | `pip install "praisonai-sandbox[e2b]"`      | `e2b-code-interpreter>=1.0.0`                      |
| `sandlock` | `pip install "praisonai-sandbox[sandlock]"` | `sandlock>=0.1.0`                                  |
| `ssh`      | `pip install "praisonai-sandbox[ssh]"`      | `asyncssh>=2.14.0`                                 |
| `modal`    | `pip install "praisonai-sandbox[modal]"`    | `modal>=0.64.0`                                    |
| `daytona`  | `pip install "praisonai-sandbox[daytona]"`  | `daytona-sdk>=0.1.0` (set `DAYTONA_API_KEY`)       |
| `novita`   | `pip install "praisonai-sandbox[novita]"`   | `novita-sandbox>=2.0.0` (set `NOVITA_API_KEY`)     |
| `all`      | `pip install "praisonai-sandbox[all]"`      | all of the above, including `daytona` and `novita` |

***

## Public API

Import any backend from `praisonai_sandbox`. Backends are lazy-loaded, so importing one never imports the others.

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
from praisonai_sandbox import (
    DockerSandbox,
    SubprocessSandbox,
    SandlockSandbox,
    SSHSandbox,
    ModalSandbox,
    DaytonaSandbox,
    NovitaSandbox,
    E2BSandbox,
)
```

| Export              | Backend      | Typical use                                               |
| ------------------- | ------------ | --------------------------------------------------------- |
| `DockerSandbox`     | `docker`     | Container isolation for production                        |
| `SubprocessSandbox` | `subprocess` | Fast local development (default)                          |
| `SandlockSandbox`   | `sandlock`   | Hardened local sandbox (Landlock + seccomp)               |
| `SSHSandbox`        | `ssh`        | Remote server execution                                   |
| `ModalSandbox`      | `modal`      | Modal cloud sandboxes                                     |
| `E2BSandbox`        | `e2b`        | E2B cloud code interpreter                                |
| `DaytonaSandbox`    | `daytona`    | Daytona cloud sandboxes (`[daytona]` + `DAYTONA_API_KEY`) |
| `NovitaSandbox`     | `novita`     | Novita cloud sandboxes (`[novita]` + `NOVITA_API_KEY`)    |

***

## Console Script

The package installs a `praisonai-sandbox` console script that prints an install hint. The user-facing CLI remains `praisonai sandbox …`.

```bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
$ praisonai-sandbox --help
praisonai-sandbox: use praisonaiagents SandboxManager or import praisonai_sandbox backends.
Install extras: pip install praisonai-sandbox[docker,e2b,sandlock,ssh,modal,daytona,novita]
```

***

## Backward Compatibility

The old `praisonai.sandbox` path still works through shims — prefer `praisonai_sandbox` in new code.

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
# New (recommended)
from praisonai_sandbox import SubprocessSandbox

# Backward-compatible shim (still works)
from praisonai.sandbox import SubprocessSandbox
```

***

## Related

<CardGroup cols={2}>
  <Card title="praisonai-sandbox Package" icon="shield-halved" href="/docs/docs/features/praisonai-sandbox-package">
    How-to guide, install matrix, and standalone usage
  </Card>

  <Card title="Sandbox" icon="shield-halved" href="/docs/docs/features/sandbox">
    Agent-level `sandbox=True` and `SandboxConfig`
  </Card>

  <Card title="Sandbox Backends" icon="server" href="/docs/docs/features/sandbox-backends">
    Backend selection and isolation levels
  </Card>

  <Card title="Installation Guide" icon="download" href="/docs/docs/installation">
    Package comparison and decision guide
  </Card>
</CardGroup>
