feat(sdk,cli): add support for Drive - #285
Merged
Merged
Conversation
This PR adds support for drives in beta. Drives are persistent storage
that can be attached or detached to sandboxes. You can mount up to 4
drives per sandbox, with up to 1 TiB per drive
CLI:
```bash
sbx drives ls
sbx drives get-or-create --max-size <bytes>
sbx drives delete <drive>
sbx create --mount <drive>:/path[:read-only|read-write]
```
SDK:
```ts
const drive = await Drive.getOrCreate({
name: 'my-drive', // unique per project
maxSize: 1024 * 1024 * 1024 * 100 // optional, default 100 GiB
})
const sandbox = await Sandbox.create({
name: 'my-sandbox',
mounts: {
'/mnt/storage': { // can add up to 4 mounts
drive: drive.name,
mode: 'read-only' // optional, defaults to 'read-write'
}
}
})
const { drives, pagination } = await Drive.list({ limit, since, until })
await drives.delete()
```
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Co-authored-by: Elisabeth Rulke <221610566+erulkey@users.noreply.github.com> Co-authored-by: Andy <76787794+AndyW22@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: LukePS <LukeSheard@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to drives-beta, this PR will be updated.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ `drives-beta` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run `changeset pre exit` on `drives-beta`.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ # Releases ## sandbox-image-node@0.1.1-beta.0 ### Patch Changes - Pin exact Node.js versions during builds and publish exact-version image tags alongside the major-version tags. ([#286](#286)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Following #301, this PR adds support for multi-region in drives - Set the `region` field when creating a new drive, or use the `--region` flag in the CLI - You can retrieve the region of a drive using the `region` getter on the `Drive` class - Drives can be only be mounted to sandboxes running on the same region Also adding the missing mock for the `Drive` class in `@vercel/sandbox-mock`
The `drives-beta` branch is behind `main` and is missing the latest stable release and region updates. --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
`read-only` mounts have been replaced by snapshots: you can now mount
the same drive on many sandboxes at once, using read-only snapshots:
```ts
const drive = await Drive.getOrCreate({ name: 'test' })
await Sandbox.create({
mounts: {
'/data': drive.snapshot()
}
})
```
To mount a drive as `read-write`, simply pass in the drive object:
```ts
await Sandbox.create({
mounts: {
'/data': drive
}
})
```
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to drives-beta, this PR will be updated.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ `drives-beta` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run `changeset pre exit` on `drives-beta`.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ # Releases ## sandbox@4.4.0-beta.0 ### Minor Changes - `read-only` mounts have been replaced by snapshots: you can now mount the same drive on many sandboxes at once, using read-only snapshots: ([#331](#331)) ```ts const drive = await Drive.getOrCreate({ name: "test" }); await Sandbox.create({ mounts: { "/data": drive.snapshot(), }, }); ``` To mount a drive as `read-write`, simply pass in the drive object: ```ts await Sandbox.create({ mounts: { "/data": drive, }, }); ``` ### Patch Changes - Updated dependencies [[`f45a57b1c6b022f751c3ea43cf23920e6e0d8489`](f45a57b)]: - @vercel/sandbox@3.4.0-beta.0 ## @vercel/sandbox@3.4.0-beta.0 ### Minor Changes - `read-only` mounts have been replaced by snapshots: you can now mount the same drive on many sandboxes at once, using read-only snapshots: ([#331](#331)) ```ts const drive = await Drive.getOrCreate({ name: "test" }); await Sandbox.create({ mounts: { "/data": drive.snapshot(), }, }); ``` To mount a drive as `read-write`, simply pass in the drive object: ```ts await Sandbox.create({ mounts: { "/data": drive, }, }); ``` ## @vercel/sandbox-mock@3.4.0-beta.0 ### Minor Changes - `read-only` mounts have been replaced by snapshots: you can now mount the same drive on many sandboxes at once, using read-only snapshots: ([#331](#331)) ```ts const drive = await Drive.getOrCreate({ name: "test" }); await Sandbox.create({ mounts: { "/data": drive.snapshot(), }, }); ``` To mount a drive as `read-write`, simply pass in the drive object: ```ts await Sandbox.create({ mounts: { "/data": drive, }, }); ``` ### Patch Changes - Updated dependencies [[`f45a57b1c6b022f751c3ea43cf23920e6e0d8489`](f45a57b)]: - @vercel/sandbox@3.4.0-beta.0 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Contributor
|
Your Vercel team Curated Tests - Permanent E2E is not permitted to deploy from this git repository. Contact an administrator to add github organization vercel as a Protected Git Scope in Curated Tests - Permanent E2E on Vercel. Once added, commit again to see your changes. Learn more: https://vercel.com/docs/security/protected-git-scopes |
marc-vercel
approved these changes
Sep 10, 2026
This PR cleans up the changesets for drives and exits changeset `pre` mode, so that we can release drives as stable
AndyW22
approved these changes
Sep 11, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add support for Drives, persistent storage that can store TBs of data and be mounted on sandboxes at a specific path. Drives support point-in-time, read-only snapshots.
Get started by creating a drive, then mount it on a sandbox:
Create a snapshot to mount the same drive on multiple sandboxes at a time:
Read the documentation to learn more: https://vercel.com/docs/sandbox/concepts/drives