Skip to content

Commit 3356a5f

Browse files
committed
Add Box support to rclone sandbox providers (#146)
1 parent 194156c commit 3356a5f

4 files changed

Lines changed: 20 additions & 20 deletions

File tree

docs/sandbox/clients.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,9 @@ Hosted sandbox clients expose provider-specific mount strategies. Choose the bac
110110
| `ModalSandboxClient` | Supports Modal cloud bucket mounts with `ModalCloudBucketMountStrategy` on `S3Mount`, `R2Mount`, and HMAC-authenticated `GCSMount`. You can use inline credentials or a named Modal Secret. |
111111
| `CloudflareSandboxClient` | Supports Cloudflare bucket mounts with `CloudflareBucketMountStrategy` on `S3Mount`, `R2Mount`, and HMAC-authenticated `GCSMount`. |
112112
| `BlaxelSandboxClient` | Supports cloud bucket mounts with `BlaxelCloudBucketMountStrategy` on `S3Mount`, `R2Mount`, and `GCSMount`. Also supports persistent Blaxel Drives with `BlaxelDriveMount` and `BlaxelDriveMountStrategy` from `agents.extensions.sandbox.blaxel`. |
113-
| `DaytonaSandboxClient` | Supports cloud bucket mounts with `DaytonaCloudBucketMountStrategy`; use it with `S3Mount`, `GCSMount`, `R2Mount`, and `AzureBlobMount`. |
114-
| `E2BSandboxClient` | Supports cloud bucket mounts with `E2BCloudBucketMountStrategy`; use it with `S3Mount`, `GCSMount`, `R2Mount`, and `AzureBlobMount`. |
115-
| `RunloopSandboxClient` | Supports cloud bucket mounts with `RunloopCloudBucketMountStrategy`; use it with `S3Mount`, `GCSMount`, `R2Mount`, and `AzureBlobMount`. |
113+
| `DaytonaSandboxClient` | Supports rclone-backed cloud storage mounts with `DaytonaCloudBucketMountStrategy`; use it with `S3Mount`, `GCSMount`, `R2Mount`, `AzureBlobMount`, and `BoxMount`. |
114+
| `E2BSandboxClient` | Supports rclone-backed cloud storage mounts with `E2BCloudBucketMountStrategy`; use it with `S3Mount`, `GCSMount`, `R2Mount`, `AzureBlobMount`, and `BoxMount`. |
115+
| `RunloopSandboxClient` | Supports rclone-backed cloud storage mounts with `RunloopCloudBucketMountStrategy`; use it with `S3Mount`, `GCSMount`, `R2Mount`, `AzureBlobMount`, and `BoxMount`. |
116116
| `VercelSandboxClient` | No hosted-specific mount strategy is currently exposed. Use manifest files, repos, or other workspace inputs instead. |
117117

118118
</div>
@@ -121,16 +121,16 @@ The table below summarizes which remote storage entries each backend can mount d
121121

122122
<div class="sandbox-nowrap-first-column-table" markdown="1">
123123

124-
| Backend | AWS S3 | Cloudflare R2 | GCS | Azure Blob Storage | S3 Files |
125-
| --- | --- | --- | --- | --- | --- |
126-
| Docker ||||||
127-
| `ModalSandboxClient` |||| - | - |
128-
| `CloudflareSandboxClient` |||| - | - |
129-
| `BlaxelSandboxClient` |||| - | - |
130-
| `DaytonaSandboxClient` ||||| - |
131-
| `E2BSandboxClient` ||||| - |
132-
| `RunloopSandboxClient` ||||| - |
133-
| `VercelSandboxClient` | - | - | - | - | - |
124+
| Backend | AWS S3 | Cloudflare R2 | GCS | Azure Blob Storage | Box | S3 Files |
125+
| --- | --- | --- | --- | --- | --- | --- |
126+
| Docker |||||||
127+
| `ModalSandboxClient` |||| - | - | - |
128+
| `CloudflareSandboxClient` |||| - | - | - |
129+
| `BlaxelSandboxClient` |||| - | - | - |
130+
| `DaytonaSandboxClient` ||||| | - |
131+
| `E2BSandboxClient` ||||| | - |
132+
| `RunloopSandboxClient` ||||| | - |
133+
| `VercelSandboxClient` | - | - | - | - | - | - |
134134

135135
</div>
136136

src/agents/extensions/sandbox/daytona/mounts.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
:class:`InContainerMountStrategy` that ensures ``rclone`` is installed inside
55
the sandbox before delegating to :class:`RcloneMountPattern`.
66
7-
Supports S3, R2, GCS, and Azure Blob mounts through a single code path.
7+
Supports S3, R2, GCS, Azure Blob, and Box mounts through a single code path.
88
"""
99

1010
from __future__ import annotations
@@ -161,12 +161,12 @@ def _assert_daytona_session(session: BaseSandboxSession) -> None:
161161

162162

163163
class DaytonaCloudBucketMountStrategy(MountStrategyBase):
164-
"""Mount cloud buckets in Daytona sandboxes via rclone.
164+
"""Mount rclone-backed cloud storage in Daytona sandboxes.
165165
166166
Wraps :class:`InContainerMountStrategy` with automatic ``rclone``
167-
provisioning. Use with any provider mount (``S3Mount``, ``R2Mount``,
168-
``GCSMount``, ``AzureBlobMount``) and let the generic framework handle
169-
config generation and mount execution.
167+
provisioning. Use with any rclone-backed provider mount (``S3Mount``,
168+
``R2Mount``, ``GCSMount``, ``AzureBlobMount``, ``BoxMount``) and let the
169+
generic framework handle config generation and mount execution.
170170
171171
Usage::
172172

src/agents/extensions/sandbox/e2b/mounts.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def _assert_e2b_session(session: BaseSandboxSession) -> None:
126126

127127

128128
class E2BCloudBucketMountStrategy(MountStrategyBase):
129-
"""Mount cloud buckets in E2B sandboxes via rclone."""
129+
"""Mount rclone-backed cloud storage in E2B sandboxes."""
130130

131131
type: Literal["e2b_cloud_bucket"] = "e2b_cloud_bucket"
132132
pattern: RcloneMountPattern = RcloneMountPattern(mode="fuse")

src/agents/extensions/sandbox/runloop/mounts.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ def _assert_runloop_session(session: BaseSandboxSession) -> None:
171171

172172

173173
class RunloopCloudBucketMountStrategy(MountStrategyBase):
174-
"""Mount cloud buckets in Runloop sandboxes via rclone."""
174+
"""Mount rclone-backed cloud storage in Runloop sandboxes."""
175175

176176
type: Literal["runloop_cloud_bucket"] = "runloop_cloud_bucket"
177177
pattern: RcloneMountPattern = RcloneMountPattern(mode="fuse")

0 commit comments

Comments
 (0)