[▲ Vercel Community](/) · [Categories](/categories) · [Latest](/latest) · [Top](/top) · [Live](/live) [Showcase](/c/showcase/41) # sandbox-volume: transactional workspace sync for Vercel Sandbox 23 views · 2 likes · 1 post Toyamarinyon (@toyamarinyon) · 2026-03-19 · ♥ 2 [@giselles-ai/sandbox-volume](https://github.com/giselles-ai/sandbox-volume) is a thin transactional sync layer for `@vercel/sandbox`. Vercel Sandbox already gives us safe, ephemeral execution. What we wanted to add was one missing layer: workspace continuity. ```ts import { Sandbox } from "@vercel/sandbox"; import { SandboxVolume, VercelBlobStorageAdapter } from "@giselles-ai/sandbox-volume"; const adapter = new VercelBlobStorageAdapter(); const volume = await SandboxVolume.create({ key: "sandbox-volume", adapter, include: ["src/**", "package.json"], exclude: [".sandbox/**/*", "dist/**"], }); const initialSandbox = await Sandbox.create(); await volume.mount(initialSandbox, async () => { await initialSandbox.runCommand("mkdir", ["workspace"]); await initialSandbox.runCommand("echo", ["hello!", ">", "workspace/notes.md"]); }); const anotherSandbox = await Sandbox.create(); await anotherSandbox.mount(anotherSandbox, async () => { await anotherSandbox.runCommand("cat", ["workspace/notes.md"]); // => hello! }); ``` Instead of treating the sandbox filesystem as the source of truth, `sandbox-volume` persists workspace files to external storage such as Vercel Blob. That lets files survive beyond a single sandbox lifecycle and stay readable or writable even when no sandbox is running. What it does: - hydrate persisted files into a sandbox path - run your code - diff against the last saved manifest - commit changes back through a pluggable storage adapter Why this exists: - snapshots can resume a sandbox, but long-lived workspace state is a different problem - agent workflows often need state to survive across turns, steps, or sandbox restarts - external storage is a better fit for durable workspace continuity than trying to treat the sandbox itself as persistent The package currently includes: - a memory adapter for tests and examples - a Vercel Blob adapter for lightweight persistent workspace storage - support for include / exclude path filters - a fallback scan strategy when `find` is unavailable If you are building on Vercel Sandbox and need state to outlive a single run, this may be useful.