Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
a09e292
feat(sdk): add name + snapshotOnShutdown params (#67)
AndyW22 Feb 25, 2026
7407ec9
feat(vercel-sandbox): support named sandboxes and sessions (#71)
marc-vercel Mar 3, 2026
540bc32
feat(vercel/sandbox): beta release for named sandboxes (#74)
marc-vercel Mar 4, 2026
a4bd866
[vercel-sandbox] fix the beta release pipeline (#75)
marc-vercel Mar 4, 2026
8f91638
[packages/sandbox] Add support for named sandboxes in the CLI (#76)
marc-vercel Mar 5, 2026
b4e4303
add debug step to release pipeline (#77)
marc-vercel Mar 5, 2026
04db6fd
Named sandboxes revamp config (#78)
marc-vercel Mar 5, 2026
85deb54
empty commit to trigger a rlease
marc-vercel Mar 6, 2026
f3d894d
feat(vercel-sandbox): fix sandbox update and set memory correctly (#79)
marc-vercel Mar 6, 2026
2310097
feat(sandbox): support --name when listing snapshots (#80)
marc-vercel Mar 6, 2026
7c2f732
chore(sdk): update patch + delete endpoints to v2 (#85)
AndyW22 Mar 11, 2026
d719718
[named-sandboxes] rebase from main (#88)
marc-vercel Mar 13, 2026
5fa98f8
[persistent-sandboxes] Use the V2 endpoints instead of V1 (#87)
marc-vercel Mar 13, 2026
e11d849
feat(sandbox-v2-beta): improve documentation (#89)
marc-vercel Mar 16, 2026
a75f5e8
feat(sandbox,vercel-sandbox): unwrap json from lists (#92)
marc-vercel Mar 17, 2026
851f510
feat(sandbox,vercel-sandbox): fix error messages and jsdoc (#94)
marc-vercel Mar 17, 2026
0864560
feat(sandbox): make session list behave the same as sandbox list (#96)
marc-vercel Mar 17, 2026
9212ac9
feat(vercel-sandbox): fix resume race-condition (#97)
marc-vercel Mar 17, 2026
b927f4b
feat(sdk): add tags to sandboxes (#95)
AndyW22 Mar 17, 2026
d4ac7da
feat(vercel-sandbox,sandbox): fix ssh connection hanging (#98)
marc-vercel Mar 17, 2026
70e5bee
feat(vercel-sandbox,sandbox): bump beta (#101)
marc-vercel Mar 17, 2026
74b9fe2
feat(vercel-sandbox): fix bug with resuming sandbox during file read …
marc-vercel Mar 18, 2026
499fd53
feat(vercel-sandbox,sandbox): support new cursor pagination (#106)
marc-vercel Mar 20, 2026
73c5db5
Merge branch 'main' into named-sandboxes
LukeSheard Mar 20, 2026
b0b0023
Merge pull request #107 from vercel/luke/merge-main-named-sandboxes
LukeSheard Mar 20, 2026
3f2869a
feat(tags): add update + list tags to CLI (#111)
AndyW22 Mar 23, 2026
b47cc40
feat(cli): default to `--sort-by=name` when using `--name-prefix` (#113)
QuiiBz Mar 25, 2026
d12e329
Version Packages (beta) (#93)
github-actions[bot] Mar 25, 2026
b2c9c31
[named-sandboxes] support default snapshot expiration (#124)
marc-vercel Apr 1, 2026
90dfaa5
feat(named-sandboxes): fix 422 error when resuming after a snapshot (…
marc-vercel Apr 1, 2026
5f52821
feat(named-sandboxes) rebase latest commits from main (#138)
marc-vercel Apr 8, 2026
b9f33af
feat(vercel-sandbox): support onResume parameter in Sandbox.get and S…
marc-vercel Apr 9, 2026
1afe3f1
feat(sandbox,vercel-sandbox): move currentSnapshotId pointer (#154)
marc-vercel Apr 17, 2026
bcd4a72
feat(sandbox,vercel-sandbox): rebase main to named-sandboxes (beta) (…
marc-vercel Apr 20, 2026
e34a67a
feat(sandbox,vercel-sandbox): stop session defaults to blocking (#159)
marc-vercel Apr 21, 2026
06c20c7
chore(vercel-sandbox): fix and improve sandbox integration tests (#162)
marc-vercel Apr 27, 2026
bb68f86
feat(vercel-sandbox): support Sandbox.getOrCreate method (#160)
marc-vercel Apr 28, 2026
1f663ac
feat(vercel-sandbox,sandbox): support pagination when listing sandbox…
marc-vercel Apr 28, 2026
0c62cab
feat(sdk): add L7 request matchers and forward URLs to network polici…
QuiiBz May 6, 2026
f86268e
feat(sdk): update to V2 API schema for network policies (#174)
QuiiBz May 6, 2026
29502d2
Merge branch 'main' into named-sandboxes
QuiiBz May 7, 2026
0dd1214
Merge main onto named-sandboxes branch (#176)
LukeSheard May 7, 2026
06c3589
Version Packages (beta) (#158)
github-actions[bot] May 8, 2026
b412627
feat(sandbox, vercel-sandbox): add node26 support (#181)
AndyW22 May 11, 2026
6c19082
Version Packages (beta) (#182)
github-actions[bot] May 11, 2026
7b8a4b7
Merge branch 'main' into named-sandboxes
LukeSheard May 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/beige-dogs-melt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@vercel/sandbox": minor
---

Add L7 request matchers and forward URLs support to network policy rules.
6 changes: 6 additions & 0 deletions .changeset/bumpy-keys-try.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@vercel/sandbox": minor
"sandbox": minor
---

Rebase from main
6 changes: 6 additions & 0 deletions .changeset/chilly-ducks-crash.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@vercel/sandbox": minor
"sandbox": minor
---

Support pagination (CLI and SDK) when listing sandboxes, snapshots, sessions
5 changes: 5 additions & 0 deletions .changeset/clean-jeans-build.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"sandbox": patch
---

Default to `--sort-by=name` when using `--name-prefix` in `sandbox ls`
5 changes: 5 additions & 0 deletions .changeset/cold-falcons-read.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"sandbox": patch
---

Fix resume race-condition
5 changes: 5 additions & 0 deletions .changeset/common-corners-leave.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"sandbox": patch
---

Add support for patch + delete v2 endpoints for named sandboxes.
6 changes: 6 additions & 0 deletions .changeset/cyan-bats-clap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@vercel/sandbox": patch
"sandbox": patch
---

Add support for tags
6 changes: 6 additions & 0 deletions .changeset/dirty-cows-talk.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@vercel/sandbox": minor
"sandbox": minor
---

Rename sandbox to session, namedSandbox to sandbox
5 changes: 5 additions & 0 deletions .changeset/empty-trains-tie.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@vercel/sandbox": patch
---

Fix an 422 error when trying to resume a sandbox after snapshotting
5 changes: 5 additions & 0 deletions .changeset/fair-pears-dream.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@vercel/sandbox": major
---

Introduce named and long-lived sandboxes
6 changes: 6 additions & 0 deletions .changeset/fresh-pumas-own.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@vercel/sandbox": minor
"sandbox": minor
---

Support default snapshot expiration for persistent sandboxes
6 changes: 6 additions & 0 deletions .changeset/fresh-rings-rescue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@vercel/sandbox": minor
"sandbox": minor
---

Refactor the sandbox update and deprecate old network-policy update
6 changes: 6 additions & 0 deletions .changeset/funny-areas-boil.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@vercel/sandbox": patch
"sandbox": patch
---

Add Node 26 support.
5 changes: 5 additions & 0 deletions .changeset/giant-dogs-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@vercel/sandbox": minor
---

Support a new method: Sandbox.getOrCreate()
5 changes: 5 additions & 0 deletions .changeset/legal-rings-work.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@vercel/sandbox": patch
---

Add support for patch + delete v2 endpoints for named sandboxes.
5 changes: 5 additions & 0 deletions .changeset/light-results-change.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@vercel/sandbox": minor
---

Rename snapshotOnShutdown to persistent
6 changes: 6 additions & 0 deletions .changeset/open-planets-joke.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@vercel/sandbox": minor
"sandbox": minor
---

Automatically scale memory to vcpu when updating
48 changes: 48 additions & 0 deletions .changeset/pre.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
"mode": "pre",
"tag": "beta",
"initialVersions": {
"ai-example": "0.1.1",
"charts-python-example": "0.1.4",
"dev-server-example": "0.1.4",
"sandbox-filesystem-snapshots": "0.0.8",
"install-packages-example": "0.1.4",
"private-repo-example": "0.1.4",
"sandbox-basics-example": "0.1.4",
"@vercel/pty-tunnel": "2.0.3",
"@vercel/pty-tunnel-server": "0.0.2",
"sandbox": "2.5.3",
"@vercel/sandbox": "1.7.1",
"workflow-code-runner": "0.1.3"
},
"changesets": [
"beige-dogs-melt",
"bumpy-keys-try",
"chilly-ducks-crash",
"clean-jeans-build",
"cold-falcons-read",
"common-corners-leave",
"cyan-bats-clap",
"dirty-cows-talk",
"empty-trains-tie",
"fair-pears-dream",
"fresh-pumas-own",
"fresh-rings-rescue",
"funny-areas-boil",
"giant-dogs-report",
"legal-rings-work",
"light-results-change",
"open-planets-joke",
"public-ears-heal",
"seven-olives-mate",
"slick-colts-learn",
"some-numbers-arrive",
"sour-rocks-grin",
"stale-hotels-grow",
"tangy-schools-like",
"tender-experts-cover",
"tough-roses-vanish",
"wet-goats-jam",
"whole-berries-juggle"
]
}
6 changes: 6 additions & 0 deletions .changeset/public-ears-heal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@vercel/sandbox": minor
"sandbox": minor
---

Move to cursor pagination. Support new sortyBy parameter for lists. Support new statusUpdatedAt filter
6 changes: 6 additions & 0 deletions .changeset/seven-olives-mate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@vercel/sandbox": patch
"sandbox": patch
---

Fix bug where the first ssh connection hang
6 changes: 6 additions & 0 deletions .changeset/slick-colts-learn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@vercel/sandbox": minor
"sandbox": minor
---

Remove support for blocking parameter in .stop() and default to always blocking. Improve CLI output when stopping a sandbox.
5 changes: 5 additions & 0 deletions .changeset/some-numbers-arrive.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"sandbox": patch
---

Improve timeout hour format and example values
6 changes: 6 additions & 0 deletions .changeset/sour-rocks-grin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@vercel/sandbox": patch
"sandbox": patch
---

Support updading current-snapshot-id of an existing sandbox
5 changes: 5 additions & 0 deletions .changeset/stale-hotels-grow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"sandbox": major
---

Introduce long-lived sandboxes to the CLI
6 changes: 6 additions & 0 deletions .changeset/tangy-schools-like.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@vercel/sandbox": minor
"sandbox": minor
---

Lists now unwrap the json and return the items and pagination fields directly
5 changes: 5 additions & 0 deletions .changeset/tender-experts-cover.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"sandbox": patch
---

Add support for updating tags and displaying tags in config.
5 changes: 5 additions & 0 deletions .changeset/tough-roses-vanish.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@vercel/sandbox": minor
---

Support new onResume parameter in Sandbox.create and Sandbox.get
5 changes: 5 additions & 0 deletions .changeset/wet-goats-jam.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"sandbox": minor
---

support new --name option for snapshots list, support new --stop option for run
6 changes: 6 additions & 0 deletions .changeset/whole-berries-juggle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@vercel/sandbox": patch
"sandbox": patch
---

Fix JsDocs, messages and double-error message bug
19 changes: 17 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
push:
branches:
- main
- named-sandboxes
pull_request:

env:
Expand Down Expand Up @@ -42,9 +43,23 @@ jobs:
- name: Run tests
run: pnpm test

- name: Verify beta pre-release mode
if: github.ref == 'refs/heads/named-sandboxes'
run: |
if [ ! -f .changeset/pre.json ]; then
echo "ERROR: .changeset/pre.json not found. named-sandboxes must be in changeset pre-release mode."
exit 1
fi
TAG=$(jq -r '.tag' .changeset/pre.json)
if [ "$TAG" != "beta" ]; then
echo "ERROR: Expected pre-release tag 'beta', got '$TAG'."
exit 1
fi
echo "Verified: changeset pre-release mode is active with tag 'beta'."

- name: Create Release Pull Request
uses: changesets/action@v1
if: github.ref == 'refs/heads/main'
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/named-sandboxes'
id: changesets
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -54,7 +69,7 @@ jobs:
commitMode: github-api

- name: Trigger Vercel CLI Sandbox Sync
if: steps.changesets.outputs.published == 'true'
if: github.ref == 'refs/heads/main' && steps.changesets.outputs.published == 'true'
uses: actions/github-script@v7
env:
PUBLISHED_PACKAGES: ${{ steps.changesets.outputs.publishedPackages }}
Expand Down
10 changes: 5 additions & 5 deletions examples/ai-example/app/actions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@ export async function createSandbox() {
});

return {
id: sandbox.sandboxId,
id: sandbox.name,
routes: sandbox.routes,
url: sandbox.domain(3000),
};
}

export async function uploadFiles(params: {
sandboxId: string;
sandboxName: string;
files: { path: string; content: string }[];
}) {
const sandbox = await Sandbox.get({
sandboxId: params.sandboxId,
name: params.sandboxName,
});

const files = params.files.map((file) => ({
Expand Down Expand Up @@ -56,11 +56,11 @@ export async function uploadFiles(params: {
export async function runCommand(params: {
args: string[];
cmd: string;
sandboxId: string;
sandboxName: string;
detached?: boolean;
}) {
const sandbox = await Sandbox.get({
sandboxId: params.sandboxId,
name: params.sandboxName,
});

const cmd = await sandbox.runCommand({
Expand Down
6 changes: 3 additions & 3 deletions examples/ai-example/app/api/logs/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@ export const maxDuration = 120;
export async function POST(request: Request) {
const body = await request.json();
const cmdId = body.cmdId;
const sandboxId = body.sandboxId;
const sandboxName = body.sandboxName;

if (!cmdId || !sandboxId) {
if (!cmdId || !sandboxName) {
return new Response("Missing required parameters", { status: 400 });
}

const encoder = new TextEncoder();
const stream = new ReadableStream({
async start(controller) {
const sandbox = await Sandbox.get({ sandboxId });
const sandbox = await Sandbox.get({ name: sandboxName });
const command = await sandbox.getCommand(cmdId);

for await (const log of command.logs()) {
Expand Down
Loading
Loading