[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-vercel-sandbox":3,"mdc-3fgbrl-key":39,"related-org-openai-vercel-sandbox":4082,"related-repo-openai-vercel-sandbox":4289},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":28,"repoUrl":29,"updatedAt":30,"license":31,"forks":32,"topics":33,"repo":34,"sourceUrl":37,"mdContent":38},"vercel-sandbox","run untrusted code in Vercel Sandboxes","Vercel Sandbox guidance — ephemeral Firecracker microVMs for running untrusted code safely. Supports AI agents, code generation, and experimentation. Use when executing user-generated or AI-generated code in isolation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16,19,22,25],{"name":13,"slug":14,"type":15},"Security","security","tag",{"name":17,"slug":18,"type":15},"Vercel","vercel",{"name":20,"slug":21,"type":15},"Sandboxing","sandboxing",{"name":23,"slug":24,"type":15},"Agents","agents",{"name":26,"slug":27,"type":15},"AI Infrastructure","ai-infrastructure",3992,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins","2026-04-06T18:41:18.807876",null,465,[],{"repoUrl":29,"stars":28,"forks":32,"topics":35,"description":36},[],"OpenAI Plugins","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins\u002Ftree\u002FHEAD\u002Fplugins\u002Fvercel\u002Fskills\u002Fvercel-sandbox","---\nname: vercel-sandbox\ndescription: Vercel Sandbox guidance — ephemeral Firecracker microVMs for running untrusted code safely. Supports AI agents, code generation, and experimentation. Use when executing user-generated or AI-generated code in isolation.\nmetadata:\n  priority: 4\n  docs:\n    - \"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fsandbox\"\n  sitemap: \"https:\u002F\u002Fvercel.com\u002Fsitemap\u002Fdocs.xml\"\n  pathPatterns: []\n  importPatterns:\n    - '@vercel\u002Fsandbox'\n  bashPatterns:\n    - '\\bnpm\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fsandbox\\b'\n    - '\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fsandbox\\b'\n    - '\\bbun\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fsandbox\\b'\n    - '\\byarn\\s+add\\s+[^\\n]*@vercel\u002Fsandbox\\b'\n  promptSignals:\n    phrases:\n      - \"@vercel\u002Fsandbox\"\n      - \"sandbox\"\n      - \"code sandbox\"\n      - \"vercel sandbox\"\n      - \"isolated environment\"\n      - \"sandboxed execution\"\n    allOf:\n      - [sandbox, code]\n      - [sandbox, execute]\n      - [sandbox, run]\n      - [sandbox, isolated]\n      - [sandbox, safe]\n      - [sandbox, environment]\n      - [isolated, execute]\n      - [isolated, code]\n      - [isolated, environment]\n      - [isolated, run]\n      - [safe, execute]\n      - [safe, code]\n      - [untrusted, code]\n      - [untrusted, execute]\n      - [code, runner]\n      - [code, playground]\n      - [execute, safely]\n      - [run, safely]\n      - [run, isolation]\n      - [execute, isolation]\n      - [ffmpeg, process]\n      - [ffmpeg, convert]\n      - [ffmpeg, compress]\n      - [student, code]\n      - [student, execute]\n      - [student, run]\n    anyOf:\n      - \"sandbox\"\n      - \"isolated\"\n      - \"isolation\"\n      - \"untrusted\"\n      - \"safely\"\n      - \"microvm\"\n      - \"ffmpeg\"\n      - \"playground\"\n    noneOf:\n      - \"iframe sandbox\"\n      - \"sandbox attribute\"\n      - \"codesandbox.io\"\n      - \"stackblitz\"\n    minScore: 4\n---\n\n# Vercel Sandbox\n\n> **CRITICAL — Your training data is outdated for this library.** Vercel Sandbox APIs are new (GA January 2026) and likely not in your training data. Before writing sandbox code, **fetch the docs** at https:\u002F\u002Fvercel.com\u002Fdocs\u002Fvercel-sandbox and the SDK reference at https:\u002F\u002Fvercel.com\u002Fdocs\u002Fvercel-sandbox\u002Fsdk-reference to find the correct `Sandbox.create()` options, `runCommand()` signatures, file I\u002FO methods (`writeFiles`, `readFile`), port exposure, and cleanup patterns. Do not guess — look up the exact API shape. The GitHub repo at https:\u002F\u002Fgithub.com\u002Fvercel\u002Fsandbox has working examples for common patterns (code execution, FFmpeg processing, dev server spawning).\n\nYou are an expert in Vercel Sandbox — ephemeral compute for safely running untrusted code.\n\n## Status & Pricing\n\nVercel Sandbox is **generally available** (January 30, 2026). The CLI and SDK are open-source. Powered by the same Firecracker infrastructure that runs 2M+ Vercel builds per day.\n\n| Resource | Hobby (Free) | Pro \u002F Enterprise |\n|----------|-------------|-----------------|\n| CPU hours | 5 \u002F month | $0.128 \u002F CPU-hour |\n| Provisioned memory | 420 GB-hr \u002F month | $0.0106 \u002F GB-hr |\n| Network bandwidth | 20 GB \u002F month | $0.15 \u002F GB |\n| Sandbox creations | 5,000 \u002F month | $0.60 \u002F 1M creations |\n\nEach sandbox can use up to **8 vCPUs** and **2 GB RAM per vCPU**. Up to **4 ports** can be exposed per sandbox.\n\n## What It Is\n\nVercel Sandbox provides **Firecracker microVMs** with millisecond startup times for running untrusted or user-generated code in complete isolation. Used by AI agents, code generation tools, developer playgrounds, and interactive tutorials.\n\n- **Base OS**: Amazon Linux 2023 (with `git`, `tar`, `openssl`, `dnf`)\n- **Runtimes**: `node24` (default since March 2026), `node22`, `python3.13`\n- **Working directory**: `\u002Fvercel\u002Fsandbox`\n- **User**: `vercel-sandbox` with `sudo` access\n- **Filesystem**: Ephemeral — artifacts must be exported before sandbox stops\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fvercel\u002Fsandbox\n\n## Key APIs\n\nPackage: `@vercel\u002Fsandbox` (v1.8.0+)\n\n### Create and Run Commands\n\n```ts\nimport { Sandbox } from '@vercel\u002Fsandbox';\n\n\u002F\u002F Create a sandbox (env vars available to all commands)\nconst sandbox = await Sandbox.create({\n  runtime: 'node24',  \u002F\u002F 'node24' | 'node22' | 'python3.13'\n  env: {              \u002F\u002F inherited by all runCommand calls\n    NODE_ENV: 'production',\n    API_KEY: process.env.API_KEY!,\n  },\n});\n\n\u002F\u002F Run a command (separated command + args)\nconst result = await sandbox.runCommand('node', ['-e', 'console.log(42)']);\nconst output = await result.stdout(); \u002F\u002F \"42\\n\"\n\n\u002F\u002F Run with options (per-command env overrides creation-level env)\nconst result2 = await sandbox.runCommand({\n  cmd: 'npm',\n  args: ['install', 'express'],\n  cwd: '\u002Fvercel\u002Fsandbox\u002Fapp',\n  env: { NODE_ENV: 'development' }, \u002F\u002F overrides creation-level NODE_ENV\n  sudo: true,\n});\n\n\u002F\u002F Detached execution (long-running processes)\nconst cmd = await sandbox.runCommand({\n  cmd: 'node',\n  args: ['server.js'],\n  detached: true,\n});\n\u002F\u002F Stream logs in real-time\nfor await (const log of cmd.logs()) {\n  console.log(`[${log.stream}] ${log.data}`);\n}\nawait cmd.wait(); \u002F\u002F block until completion\n```\n\n### File Operations\n\n```ts\n\u002F\u002F Write files (takes array of { path, content: Buffer })\nawait sandbox.writeFiles([\n  { path: 'app.js', content: Buffer.from('console.log(\"hello\")') },\n  { path: 'package.json', content: Buffer.from('{\"type\":\"module\"}') },\n]);\n\n\u002F\u002F Read a file (returns Buffer or null)\nconst buf = await sandbox.readFileToBuffer({ path: 'app.js' });\n\n\u002F\u002F Read as stream\nconst stream = await sandbox.readFile({ path: 'app.js' });\n\n\u002F\u002F Download to local filesystem\nawait sandbox.downloadFile('output.zip', '.\u002Flocal-output.zip');\n\n\u002F\u002F Create directory\nawait sandbox.mkDir('src\u002Fcomponents');\n```\n\n### Source Initialization\n\n```ts\n\u002F\u002F Clone a git repo\nconst sandbox = await Sandbox.create({\n  source: { type: 'git', url: 'https:\u002F\u002Fgithub.com\u002Fuser\u002Frepo', depth: 1 },\n});\n\n\u002F\u002F Mount a tarball\nconst sandbox = await Sandbox.create({\n  source: { type: 'tarball', url: 'https:\u002F\u002Fexample.com\u002Fproject.tar.gz' },\n});\n\n\u002F\u002F Restore from snapshot\nconst sandbox = await Sandbox.create({\n  source: { type: 'snapshot', snapshotId: 'snap_abc123' },\n});\n```\n\n### Snapshots (Save and Resume VM State)\n\n```ts\n\u002F\u002F Capture full VM state (filesystem + packages)\n\u002F\u002F WARNING: sandbox shuts down after snapshot creation\nconst snapshot = await sandbox.snapshot({ expiration: 86400_000 }); \u002F\u002F 24h\nconsole.log(snapshot.snapshotId);\n\n\u002F\u002F List and manage snapshots\nconst { snapshots } = await Snapshot.list();\nconst snap = await Snapshot.get({ snapshotId: 'snap_abc' });\nawait snap.delete();\n```\n\n### Network Policies (SNI Filtering + CIDR)\n\nEgress firewall uses **SNI filtering** on TLS client-hello — outbound connections are matched at the handshake and unauthorized destinations are rejected before data transmits. For non-TLS traffic, IP\u002FCIDR rules are also supported.\n\nPolicies can be updated at runtime without restarting the sandbox process, enabling multi-step workflows (e.g., open access during setup → deny-all before running untrusted code).\n\n```ts\n\u002F\u002F Lock down before running untrusted code\nawait sandbox.updateNetworkPolicy('deny-all');\n\n\u002F\u002F Allow specific domains only (SNI filtering)\nawait sandbox.updateNetworkPolicy({\n  allow: ['api.openai.com', '*.googleapis.com'],\n});\n\n\u002F\u002F Credential brokering (inject API keys so untrusted code never sees them)\nawait sandbox.updateNetworkPolicy({\n  allow: {\n    'ai-gateway.vercel.sh': [{\n      transform: [{ headers: { 'x-api-key': process.env.SECRET_KEY! } }],\n    }],\n  },\n});\n```\n\n### Public URLs and Lifecycle\n\n```ts\n\u002F\u002F Expose a port and get a public URL\nconst sandbox = await Sandbox.create({ ports: [3000] });\nconst url = sandbox.domain(3000); \u002F\u002F public URL\n\n\u002F\u002F Extend timeout\nawait sandbox.extendTimeout(300_000); \u002F\u002F +5 minutes\n\n\u002F\u002F Clean up\nawait sandbox.stop();\n\n\u002F\u002F Check status\nsandbox.status; \u002F\u002F 'pending' | 'running' | 'stopping' | 'stopped' | 'failed'\n\n\u002F\u002F Resource tracking (after stop)\nsandbox.activeCpuUsageMs;\nsandbox.networkUsage; \u002F\u002F { ingress, egress } in bytes\n```\n\n### List and Rehydrate\n\n```ts\n\u002F\u002F List existing sandboxes\nconst { sandboxes } = await Sandbox.list({ limit: 10 });\n\n\u002F\u002F Reconnect to a running sandbox\nconst sandbox = await Sandbox.get({ sandboxId: 'sbx_abc123' });\n```\n\n## Timeout Limits\n\n| Plan | Max Timeout |\n|------|------------|\n| Default | 5 minutes |\n| Hobby | 45 minutes |\n| Pro\u002FEnterprise | 5 hours |\n\n## Agent Patterns\n\n1. **Safe AI code execution**: Run AI-generated code without production risk\n2. **Snapshot-based fast restart**: Install deps once → snapshot → create from snapshot (skip setup)\n3. **Network isolation**: Allow all during setup → `deny-all` before untrusted code\n4. **Credential brokering**: Inject API keys via network policy transforms\n5. **Live preview**: Expose ports via `sandbox.domain(port)` for generated apps\n6. **File I\u002FO workflow**: `writeFiles()` → execute → `readFileToBuffer()` results\n\n## When to Use\n\n- AI agents need to execute generated code safely\n- User-submitted code execution (playgrounds, tutorials)\n- Code review validation (used by Vercel Agent)\n- Ephemeral development environments\n\n## When NOT to Use\n\n- Production workloads → use Vercel Functions\n- Long-running services → use a dedicated server\n- Simple function execution → use Serverless Functions\n\n## References\n\n- 📖 docs: https:\u002F\u002Fvercel.com\u002Fdocs\u002Fvercel-sandbox\n- 📖 SDK reference: https:\u002F\u002Fvercel.com\u002Fdocs\u002Fvercel-sandbox\u002Fsdk-reference\n- 📖 GitHub: https:\u002F\u002Fgithub.com\u002Fvercel\u002Fsandbox\n",{"data":40,"body":111},{"name":4,"description":6,"metadata":41},{"priority":42,"docs":43,"sitemap":45,"pathPatterns":46,"importPatterns":47,"bashPatterns":49,"promptSignals":54},4,[44],"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fsandbox","https:\u002F\u002Fvercel.com\u002Fsitemap\u002Fdocs.xml",[],[48],"@vercel\u002Fsandbox",[50,51,52,53],"\\bnpm\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fsandbox\\b","\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fsandbox\\b","\\bbun\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fsandbox\\b","\\byarn\\s+add\\s+[^\\n]*@vercel\u002Fsandbox\\b",{"phrases":55,"allOf":61,"anyOf":104,"noneOf":106,"minScore":42},[48,56,57,58,59,60],"sandbox","code sandbox","vercel sandbox","isolated environment","sandboxed execution",[62,64,66,68,70,72,74,75,76,77,78,79,80,82,83,85,87,89,90,92,93,96,98,100,102,103],[56,63],"code",[56,65],"execute",[56,67],"run",[56,69],"isolated",[56,71],"safe",[56,73],"environment",[69,65],[69,63],[69,73],[69,67],[71,65],[71,63],[81,63],"untrusted",[81,65],[63,84],"runner",[63,86],"playground",[65,88],"safely",[67,88],[67,91],"isolation",[65,91],[94,95],"ffmpeg","process",[94,97],"convert",[94,99],"compress",[101,63],"student",[101,65],[101,67],[56,69,91,81,88,105,94,86],"microvm",[107,108,109,110],"iframe sandbox","sandbox attribute","codesandbox.io","stackblitz",{"type":112,"children":113},"root",[114,122,203,208,215,227,332,358,364,376,514,520,532,539,1615,1621,2145,2151,2576,2582,2879,2885,2897,2902,3290,3296,3634,3640,3817,3823,3884,3890,3984,3990,4013,4019,4037,4043,4076],{"type":115,"tag":116,"props":117,"children":118},"element","h1",{"id":4},[119],{"type":120,"value":121},"text","Vercel Sandbox",{"type":115,"tag":123,"props":124,"children":125},"blockquote",{},[126],{"type":115,"tag":127,"props":128,"children":129},"p",{},[130,136,138,143,145,153,155,161,163,169,171,177,179,185,187,193,195,201],{"type":115,"tag":131,"props":132,"children":133},"strong",{},[134],{"type":120,"value":135},"CRITICAL — Your training data is outdated for this library.",{"type":120,"value":137}," Vercel Sandbox APIs are new (GA January 2026) and likely not in your training data. Before writing sandbox code, ",{"type":115,"tag":131,"props":139,"children":140},{},[141],{"type":120,"value":142},"fetch the docs",{"type":120,"value":144}," at ",{"type":115,"tag":146,"props":147,"children":151},"a",{"href":148,"rel":149},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fvercel-sandbox",[150],"nofollow",[152],{"type":120,"value":148},{"type":120,"value":154}," and the SDK reference at ",{"type":115,"tag":146,"props":156,"children":159},{"href":157,"rel":158},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fvercel-sandbox\u002Fsdk-reference",[150],[160],{"type":120,"value":157},{"type":120,"value":162}," to find the correct ",{"type":115,"tag":63,"props":164,"children":166},{"className":165},[],[167],{"type":120,"value":168},"Sandbox.create()",{"type":120,"value":170}," options, ",{"type":115,"tag":63,"props":172,"children":174},{"className":173},[],[175],{"type":120,"value":176},"runCommand()",{"type":120,"value":178}," signatures, file I\u002FO methods (",{"type":115,"tag":63,"props":180,"children":182},{"className":181},[],[183],{"type":120,"value":184},"writeFiles",{"type":120,"value":186},", ",{"type":115,"tag":63,"props":188,"children":190},{"className":189},[],[191],{"type":120,"value":192},"readFile",{"type":120,"value":194},"), port exposure, and cleanup patterns. Do not guess — look up the exact API shape. The GitHub repo at ",{"type":115,"tag":146,"props":196,"children":199},{"href":197,"rel":198},"https:\u002F\u002Fgithub.com\u002Fvercel\u002Fsandbox",[150],[200],{"type":120,"value":197},{"type":120,"value":202}," has working examples for common patterns (code execution, FFmpeg processing, dev server spawning).",{"type":115,"tag":127,"props":204,"children":205},{},[206],{"type":120,"value":207},"You are an expert in Vercel Sandbox — ephemeral compute for safely running untrusted code.",{"type":115,"tag":209,"props":210,"children":212},"h2",{"id":211},"status-pricing",[213],{"type":120,"value":214},"Status & Pricing",{"type":115,"tag":127,"props":216,"children":217},{},[218,220,225],{"type":120,"value":219},"Vercel Sandbox is ",{"type":115,"tag":131,"props":221,"children":222},{},[223],{"type":120,"value":224},"generally available",{"type":120,"value":226}," (January 30, 2026). The CLI and SDK are open-source. Powered by the same Firecracker infrastructure that runs 2M+ Vercel builds per day.",{"type":115,"tag":228,"props":229,"children":230},"table",{},[231,255],{"type":115,"tag":232,"props":233,"children":234},"thead",{},[235],{"type":115,"tag":236,"props":237,"children":238},"tr",{},[239,245,250],{"type":115,"tag":240,"props":241,"children":242},"th",{},[243],{"type":120,"value":244},"Resource",{"type":115,"tag":240,"props":246,"children":247},{},[248],{"type":120,"value":249},"Hobby (Free)",{"type":115,"tag":240,"props":251,"children":252},{},[253],{"type":120,"value":254},"Pro \u002F Enterprise",{"type":115,"tag":256,"props":257,"children":258},"tbody",{},[259,278,296,314],{"type":115,"tag":236,"props":260,"children":261},{},[262,268,273],{"type":115,"tag":263,"props":264,"children":265},"td",{},[266],{"type":120,"value":267},"CPU hours",{"type":115,"tag":263,"props":269,"children":270},{},[271],{"type":120,"value":272},"5 \u002F month",{"type":115,"tag":263,"props":274,"children":275},{},[276],{"type":120,"value":277},"$0.128 \u002F CPU-hour",{"type":115,"tag":236,"props":279,"children":280},{},[281,286,291],{"type":115,"tag":263,"props":282,"children":283},{},[284],{"type":120,"value":285},"Provisioned memory",{"type":115,"tag":263,"props":287,"children":288},{},[289],{"type":120,"value":290},"420 GB-hr \u002F month",{"type":115,"tag":263,"props":292,"children":293},{},[294],{"type":120,"value":295},"$0.0106 \u002F GB-hr",{"type":115,"tag":236,"props":297,"children":298},{},[299,304,309],{"type":115,"tag":263,"props":300,"children":301},{},[302],{"type":120,"value":303},"Network bandwidth",{"type":115,"tag":263,"props":305,"children":306},{},[307],{"type":120,"value":308},"20 GB \u002F month",{"type":115,"tag":263,"props":310,"children":311},{},[312],{"type":120,"value":313},"$0.15 \u002F GB",{"type":115,"tag":236,"props":315,"children":316},{},[317,322,327],{"type":115,"tag":263,"props":318,"children":319},{},[320],{"type":120,"value":321},"Sandbox creations",{"type":115,"tag":263,"props":323,"children":324},{},[325],{"type":120,"value":326},"5,000 \u002F month",{"type":115,"tag":263,"props":328,"children":329},{},[330],{"type":120,"value":331},"$0.60 \u002F 1M creations",{"type":115,"tag":127,"props":333,"children":334},{},[335,337,342,344,349,351,356],{"type":120,"value":336},"Each sandbox can use up to ",{"type":115,"tag":131,"props":338,"children":339},{},[340],{"type":120,"value":341},"8 vCPUs",{"type":120,"value":343}," and ",{"type":115,"tag":131,"props":345,"children":346},{},[347],{"type":120,"value":348},"2 GB RAM per vCPU",{"type":120,"value":350},". Up to ",{"type":115,"tag":131,"props":352,"children":353},{},[354],{"type":120,"value":355},"4 ports",{"type":120,"value":357}," can be exposed per sandbox.",{"type":115,"tag":209,"props":359,"children":361},{"id":360},"what-it-is",[362],{"type":120,"value":363},"What It Is",{"type":115,"tag":127,"props":365,"children":366},{},[367,369,374],{"type":120,"value":368},"Vercel Sandbox provides ",{"type":115,"tag":131,"props":370,"children":371},{},[372],{"type":120,"value":373},"Firecracker microVMs",{"type":120,"value":375}," with millisecond startup times for running untrusted or user-generated code in complete isolation. Used by AI agents, code generation tools, developer playgrounds, and interactive tutorials.",{"type":115,"tag":377,"props":378,"children":379},"ul",{},[380,420,451,466,490,500],{"type":115,"tag":381,"props":382,"children":383},"li",{},[384,389,391,397,398,404,405,411,412,418],{"type":115,"tag":131,"props":385,"children":386},{},[387],{"type":120,"value":388},"Base OS",{"type":120,"value":390},": Amazon Linux 2023 (with ",{"type":115,"tag":63,"props":392,"children":394},{"className":393},[],[395],{"type":120,"value":396},"git",{"type":120,"value":186},{"type":115,"tag":63,"props":399,"children":401},{"className":400},[],[402],{"type":120,"value":403},"tar",{"type":120,"value":186},{"type":115,"tag":63,"props":406,"children":408},{"className":407},[],[409],{"type":120,"value":410},"openssl",{"type":120,"value":186},{"type":115,"tag":63,"props":413,"children":415},{"className":414},[],[416],{"type":120,"value":417},"dnf",{"type":120,"value":419},")",{"type":115,"tag":381,"props":421,"children":422},{},[423,428,430,436,438,444,445],{"type":115,"tag":131,"props":424,"children":425},{},[426],{"type":120,"value":427},"Runtimes",{"type":120,"value":429},": ",{"type":115,"tag":63,"props":431,"children":433},{"className":432},[],[434],{"type":120,"value":435},"node24",{"type":120,"value":437}," (default since March 2026), ",{"type":115,"tag":63,"props":439,"children":441},{"className":440},[],[442],{"type":120,"value":443},"node22",{"type":120,"value":186},{"type":115,"tag":63,"props":446,"children":448},{"className":447},[],[449],{"type":120,"value":450},"python3.13",{"type":115,"tag":381,"props":452,"children":453},{},[454,459,460],{"type":115,"tag":131,"props":455,"children":456},{},[457],{"type":120,"value":458},"Working directory",{"type":120,"value":429},{"type":115,"tag":63,"props":461,"children":463},{"className":462},[],[464],{"type":120,"value":465},"\u002Fvercel\u002Fsandbox",{"type":115,"tag":381,"props":467,"children":468},{},[469,474,475,480,482,488],{"type":115,"tag":131,"props":470,"children":471},{},[472],{"type":120,"value":473},"User",{"type":120,"value":429},{"type":115,"tag":63,"props":476,"children":478},{"className":477},[],[479],{"type":120,"value":4},{"type":120,"value":481}," with ",{"type":115,"tag":63,"props":483,"children":485},{"className":484},[],[486],{"type":120,"value":487},"sudo",{"type":120,"value":489}," access",{"type":115,"tag":381,"props":491,"children":492},{},[493,498],{"type":115,"tag":131,"props":494,"children":495},{},[496],{"type":120,"value":497},"Filesystem",{"type":120,"value":499},": Ephemeral — artifacts must be exported before sandbox stops",{"type":115,"tag":381,"props":501,"children":502},{},[503,508,509],{"type":115,"tag":131,"props":504,"children":505},{},[506],{"type":120,"value":507},"GitHub",{"type":120,"value":429},{"type":115,"tag":146,"props":510,"children":512},{"href":197,"rel":511},[150],[513],{"type":120,"value":197},{"type":115,"tag":209,"props":515,"children":517},{"id":516},"key-apis",[518],{"type":120,"value":519},"Key APIs",{"type":115,"tag":127,"props":521,"children":522},{},[523,525,530],{"type":120,"value":524},"Package: ",{"type":115,"tag":63,"props":526,"children":528},{"className":527},[],[529],{"type":120,"value":48},{"type":120,"value":531}," (v1.8.0+)",{"type":115,"tag":533,"props":534,"children":536},"h3",{"id":535},"create-and-run-commands",[537],{"type":120,"value":538},"Create and Run Commands",{"type":115,"tag":540,"props":541,"children":546},"pre",{"className":542,"code":543,"language":544,"meta":545,"style":545},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { Sandbox } from '@vercel\u002Fsandbox';\n\n\u002F\u002F Create a sandbox (env vars available to all commands)\nconst sandbox = await Sandbox.create({\n  runtime: 'node24',  \u002F\u002F 'node24' | 'node22' | 'python3.13'\n  env: {              \u002F\u002F inherited by all runCommand calls\n    NODE_ENV: 'production',\n    API_KEY: process.env.API_KEY!,\n  },\n});\n\n\u002F\u002F Run a command (separated command + args)\nconst result = await sandbox.runCommand('node', ['-e', 'console.log(42)']);\nconst output = await result.stdout(); \u002F\u002F \"42\\n\"\n\n\u002F\u002F Run with options (per-command env overrides creation-level env)\nconst result2 = await sandbox.runCommand({\n  cmd: 'npm',\n  args: ['install', 'express'],\n  cwd: '\u002Fvercel\u002Fsandbox\u002Fapp',\n  env: { NODE_ENV: 'development' }, \u002F\u002F overrides creation-level NODE_ENV\n  sudo: true,\n});\n\n\u002F\u002F Detached execution (long-running processes)\nconst cmd = await sandbox.runCommand({\n  cmd: 'node',\n  args: ['server.js'],\n  detached: true,\n});\n\u002F\u002F Stream logs in real-time\nfor await (const log of cmd.logs()) {\n  console.log(`[${log.stream}] ${log.data}`);\n}\nawait cmd.wait(); \u002F\u002F block until completion\n","ts","",[547],{"type":115,"tag":63,"props":548,"children":549},{"__ignoreMap":545},[550,604,614,624,673,710,732,763,804,813,830,838,847,947,997,1005,1014,1055,1085,1141,1171,1219,1242,1258,1266,1275,1316,1344,1381,1402,1418,1427,1482,1571,1580],{"type":115,"tag":551,"props":552,"children":555},"span",{"class":553,"line":554},"line",1,[556,562,568,574,579,584,589,594,599],{"type":115,"tag":551,"props":557,"children":559},{"style":558},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[560],{"type":120,"value":561},"import",{"type":115,"tag":551,"props":563,"children":565},{"style":564},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[566],{"type":120,"value":567}," {",{"type":115,"tag":551,"props":569,"children":571},{"style":570},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[572],{"type":120,"value":573}," Sandbox",{"type":115,"tag":551,"props":575,"children":576},{"style":564},[577],{"type":120,"value":578}," }",{"type":115,"tag":551,"props":580,"children":581},{"style":558},[582],{"type":120,"value":583}," from",{"type":115,"tag":551,"props":585,"children":586},{"style":564},[587],{"type":120,"value":588}," '",{"type":115,"tag":551,"props":590,"children":592},{"style":591},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[593],{"type":120,"value":48},{"type":115,"tag":551,"props":595,"children":596},{"style":564},[597],{"type":120,"value":598},"'",{"type":115,"tag":551,"props":600,"children":601},{"style":564},[602],{"type":120,"value":603},";\n",{"type":115,"tag":551,"props":605,"children":607},{"class":553,"line":606},2,[608],{"type":115,"tag":551,"props":609,"children":611},{"emptyLinePlaceholder":610},true,[612],{"type":120,"value":613},"\n",{"type":115,"tag":551,"props":615,"children":617},{"class":553,"line":616},3,[618],{"type":115,"tag":551,"props":619,"children":621},{"style":620},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[622],{"type":120,"value":623},"\u002F\u002F Create a sandbox (env vars available to all commands)\n",{"type":115,"tag":551,"props":625,"children":626},{"class":553,"line":42},[627,633,638,643,648,652,657,663,668],{"type":115,"tag":551,"props":628,"children":630},{"style":629},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[631],{"type":120,"value":632},"const",{"type":115,"tag":551,"props":634,"children":635},{"style":570},[636],{"type":120,"value":637}," sandbox ",{"type":115,"tag":551,"props":639,"children":640},{"style":564},[641],{"type":120,"value":642},"=",{"type":115,"tag":551,"props":644,"children":645},{"style":558},[646],{"type":120,"value":647}," await",{"type":115,"tag":551,"props":649,"children":650},{"style":570},[651],{"type":120,"value":573},{"type":115,"tag":551,"props":653,"children":654},{"style":564},[655],{"type":120,"value":656},".",{"type":115,"tag":551,"props":658,"children":660},{"style":659},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[661],{"type":120,"value":662},"create",{"type":115,"tag":551,"props":664,"children":665},{"style":570},[666],{"type":120,"value":667},"(",{"type":115,"tag":551,"props":669,"children":670},{"style":564},[671],{"type":120,"value":672},"{\n",{"type":115,"tag":551,"props":674,"children":676},{"class":553,"line":675},5,[677,683,688,692,696,700,705],{"type":115,"tag":551,"props":678,"children":680},{"style":679},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[681],{"type":120,"value":682},"  runtime",{"type":115,"tag":551,"props":684,"children":685},{"style":564},[686],{"type":120,"value":687},":",{"type":115,"tag":551,"props":689,"children":690},{"style":564},[691],{"type":120,"value":588},{"type":115,"tag":551,"props":693,"children":694},{"style":591},[695],{"type":120,"value":435},{"type":115,"tag":551,"props":697,"children":698},{"style":564},[699],{"type":120,"value":598},{"type":115,"tag":551,"props":701,"children":702},{"style":564},[703],{"type":120,"value":704},",",{"type":115,"tag":551,"props":706,"children":707},{"style":620},[708],{"type":120,"value":709},"  \u002F\u002F 'node24' | 'node22' | 'python3.13'\n",{"type":115,"tag":551,"props":711,"children":713},{"class":553,"line":712},6,[714,719,723,727],{"type":115,"tag":551,"props":715,"children":716},{"style":679},[717],{"type":120,"value":718},"  env",{"type":115,"tag":551,"props":720,"children":721},{"style":564},[722],{"type":120,"value":687},{"type":115,"tag":551,"props":724,"children":725},{"style":564},[726],{"type":120,"value":567},{"type":115,"tag":551,"props":728,"children":729},{"style":620},[730],{"type":120,"value":731},"              \u002F\u002F inherited by all runCommand calls\n",{"type":115,"tag":551,"props":733,"children":735},{"class":553,"line":734},7,[736,741,745,749,754,758],{"type":115,"tag":551,"props":737,"children":738},{"style":679},[739],{"type":120,"value":740},"    NODE_ENV",{"type":115,"tag":551,"props":742,"children":743},{"style":564},[744],{"type":120,"value":687},{"type":115,"tag":551,"props":746,"children":747},{"style":564},[748],{"type":120,"value":588},{"type":115,"tag":551,"props":750,"children":751},{"style":591},[752],{"type":120,"value":753},"production",{"type":115,"tag":551,"props":755,"children":756},{"style":564},[757],{"type":120,"value":598},{"type":115,"tag":551,"props":759,"children":760},{"style":564},[761],{"type":120,"value":762},",\n",{"type":115,"tag":551,"props":764,"children":766},{"class":553,"line":765},8,[767,772,776,781,785,790,794,799],{"type":115,"tag":551,"props":768,"children":769},{"style":679},[770],{"type":120,"value":771},"    API_KEY",{"type":115,"tag":551,"props":773,"children":774},{"style":564},[775],{"type":120,"value":687},{"type":115,"tag":551,"props":777,"children":778},{"style":570},[779],{"type":120,"value":780}," process",{"type":115,"tag":551,"props":782,"children":783},{"style":564},[784],{"type":120,"value":656},{"type":115,"tag":551,"props":786,"children":787},{"style":570},[788],{"type":120,"value":789},"env",{"type":115,"tag":551,"props":791,"children":792},{"style":564},[793],{"type":120,"value":656},{"type":115,"tag":551,"props":795,"children":796},{"style":570},[797],{"type":120,"value":798},"API_KEY",{"type":115,"tag":551,"props":800,"children":801},{"style":564},[802],{"type":120,"value":803},"!,\n",{"type":115,"tag":551,"props":805,"children":807},{"class":553,"line":806},9,[808],{"type":115,"tag":551,"props":809,"children":810},{"style":564},[811],{"type":120,"value":812},"  },\n",{"type":115,"tag":551,"props":814,"children":816},{"class":553,"line":815},10,[817,822,826],{"type":115,"tag":551,"props":818,"children":819},{"style":564},[820],{"type":120,"value":821},"}",{"type":115,"tag":551,"props":823,"children":824},{"style":570},[825],{"type":120,"value":419},{"type":115,"tag":551,"props":827,"children":828},{"style":564},[829],{"type":120,"value":603},{"type":115,"tag":551,"props":831,"children":833},{"class":553,"line":832},11,[834],{"type":115,"tag":551,"props":835,"children":836},{"emptyLinePlaceholder":610},[837],{"type":120,"value":613},{"type":115,"tag":551,"props":839,"children":841},{"class":553,"line":840},12,[842],{"type":115,"tag":551,"props":843,"children":844},{"style":620},[845],{"type":120,"value":846},"\u002F\u002F Run a command (separated command + args)\n",{"type":115,"tag":551,"props":848,"children":850},{"class":553,"line":849},13,[851,855,860,864,868,873,877,882,886,890,895,899,903,908,912,917,921,925,929,934,938,943],{"type":115,"tag":551,"props":852,"children":853},{"style":629},[854],{"type":120,"value":632},{"type":115,"tag":551,"props":856,"children":857},{"style":570},[858],{"type":120,"value":859}," result ",{"type":115,"tag":551,"props":861,"children":862},{"style":564},[863],{"type":120,"value":642},{"type":115,"tag":551,"props":865,"children":866},{"style":558},[867],{"type":120,"value":647},{"type":115,"tag":551,"props":869,"children":870},{"style":570},[871],{"type":120,"value":872}," sandbox",{"type":115,"tag":551,"props":874,"children":875},{"style":564},[876],{"type":120,"value":656},{"type":115,"tag":551,"props":878,"children":879},{"style":659},[880],{"type":120,"value":881},"runCommand",{"type":115,"tag":551,"props":883,"children":884},{"style":570},[885],{"type":120,"value":667},{"type":115,"tag":551,"props":887,"children":888},{"style":564},[889],{"type":120,"value":598},{"type":115,"tag":551,"props":891,"children":892},{"style":591},[893],{"type":120,"value":894},"node",{"type":115,"tag":551,"props":896,"children":897},{"style":564},[898],{"type":120,"value":598},{"type":115,"tag":551,"props":900,"children":901},{"style":564},[902],{"type":120,"value":704},{"type":115,"tag":551,"props":904,"children":905},{"style":570},[906],{"type":120,"value":907}," [",{"type":115,"tag":551,"props":909,"children":910},{"style":564},[911],{"type":120,"value":598},{"type":115,"tag":551,"props":913,"children":914},{"style":591},[915],{"type":120,"value":916},"-e",{"type":115,"tag":551,"props":918,"children":919},{"style":564},[920],{"type":120,"value":598},{"type":115,"tag":551,"props":922,"children":923},{"style":564},[924],{"type":120,"value":704},{"type":115,"tag":551,"props":926,"children":927},{"style":564},[928],{"type":120,"value":588},{"type":115,"tag":551,"props":930,"children":931},{"style":591},[932],{"type":120,"value":933},"console.log(42)",{"type":115,"tag":551,"props":935,"children":936},{"style":564},[937],{"type":120,"value":598},{"type":115,"tag":551,"props":939,"children":940},{"style":570},[941],{"type":120,"value":942},"])",{"type":115,"tag":551,"props":944,"children":945},{"style":564},[946],{"type":120,"value":603},{"type":115,"tag":551,"props":948,"children":950},{"class":553,"line":949},14,[951,955,960,964,968,973,977,982,987,992],{"type":115,"tag":551,"props":952,"children":953},{"style":629},[954],{"type":120,"value":632},{"type":115,"tag":551,"props":956,"children":957},{"style":570},[958],{"type":120,"value":959}," output ",{"type":115,"tag":551,"props":961,"children":962},{"style":564},[963],{"type":120,"value":642},{"type":115,"tag":551,"props":965,"children":966},{"style":558},[967],{"type":120,"value":647},{"type":115,"tag":551,"props":969,"children":970},{"style":570},[971],{"type":120,"value":972}," result",{"type":115,"tag":551,"props":974,"children":975},{"style":564},[976],{"type":120,"value":656},{"type":115,"tag":551,"props":978,"children":979},{"style":659},[980],{"type":120,"value":981},"stdout",{"type":115,"tag":551,"props":983,"children":984},{"style":570},[985],{"type":120,"value":986},"()",{"type":115,"tag":551,"props":988,"children":989},{"style":564},[990],{"type":120,"value":991},";",{"type":115,"tag":551,"props":993,"children":994},{"style":620},[995],{"type":120,"value":996}," \u002F\u002F \"42\\n\"\n",{"type":115,"tag":551,"props":998,"children":1000},{"class":553,"line":999},15,[1001],{"type":115,"tag":551,"props":1002,"children":1003},{"emptyLinePlaceholder":610},[1004],{"type":120,"value":613},{"type":115,"tag":551,"props":1006,"children":1008},{"class":553,"line":1007},16,[1009],{"type":115,"tag":551,"props":1010,"children":1011},{"style":620},[1012],{"type":120,"value":1013},"\u002F\u002F Run with options (per-command env overrides creation-level env)\n",{"type":115,"tag":551,"props":1015,"children":1017},{"class":553,"line":1016},17,[1018,1022,1027,1031,1035,1039,1043,1047,1051],{"type":115,"tag":551,"props":1019,"children":1020},{"style":629},[1021],{"type":120,"value":632},{"type":115,"tag":551,"props":1023,"children":1024},{"style":570},[1025],{"type":120,"value":1026}," result2 ",{"type":115,"tag":551,"props":1028,"children":1029},{"style":564},[1030],{"type":120,"value":642},{"type":115,"tag":551,"props":1032,"children":1033},{"style":558},[1034],{"type":120,"value":647},{"type":115,"tag":551,"props":1036,"children":1037},{"style":570},[1038],{"type":120,"value":872},{"type":115,"tag":551,"props":1040,"children":1041},{"style":564},[1042],{"type":120,"value":656},{"type":115,"tag":551,"props":1044,"children":1045},{"style":659},[1046],{"type":120,"value":881},{"type":115,"tag":551,"props":1048,"children":1049},{"style":570},[1050],{"type":120,"value":667},{"type":115,"tag":551,"props":1052,"children":1053},{"style":564},[1054],{"type":120,"value":672},{"type":115,"tag":551,"props":1056,"children":1058},{"class":553,"line":1057},18,[1059,1064,1068,1072,1077,1081],{"type":115,"tag":551,"props":1060,"children":1061},{"style":679},[1062],{"type":120,"value":1063},"  cmd",{"type":115,"tag":551,"props":1065,"children":1066},{"style":564},[1067],{"type":120,"value":687},{"type":115,"tag":551,"props":1069,"children":1070},{"style":564},[1071],{"type":120,"value":588},{"type":115,"tag":551,"props":1073,"children":1074},{"style":591},[1075],{"type":120,"value":1076},"npm",{"type":115,"tag":551,"props":1078,"children":1079},{"style":564},[1080],{"type":120,"value":598},{"type":115,"tag":551,"props":1082,"children":1083},{"style":564},[1084],{"type":120,"value":762},{"type":115,"tag":551,"props":1086,"children":1088},{"class":553,"line":1087},19,[1089,1094,1098,1102,1106,1111,1115,1119,1123,1128,1132,1137],{"type":115,"tag":551,"props":1090,"children":1091},{"style":679},[1092],{"type":120,"value":1093},"  args",{"type":115,"tag":551,"props":1095,"children":1096},{"style":564},[1097],{"type":120,"value":687},{"type":115,"tag":551,"props":1099,"children":1100},{"style":570},[1101],{"type":120,"value":907},{"type":115,"tag":551,"props":1103,"children":1104},{"style":564},[1105],{"type":120,"value":598},{"type":115,"tag":551,"props":1107,"children":1108},{"style":591},[1109],{"type":120,"value":1110},"install",{"type":115,"tag":551,"props":1112,"children":1113},{"style":564},[1114],{"type":120,"value":598},{"type":115,"tag":551,"props":1116,"children":1117},{"style":564},[1118],{"type":120,"value":704},{"type":115,"tag":551,"props":1120,"children":1121},{"style":564},[1122],{"type":120,"value":588},{"type":115,"tag":551,"props":1124,"children":1125},{"style":591},[1126],{"type":120,"value":1127},"express",{"type":115,"tag":551,"props":1129,"children":1130},{"style":564},[1131],{"type":120,"value":598},{"type":115,"tag":551,"props":1133,"children":1134},{"style":570},[1135],{"type":120,"value":1136},"]",{"type":115,"tag":551,"props":1138,"children":1139},{"style":564},[1140],{"type":120,"value":762},{"type":115,"tag":551,"props":1142,"children":1144},{"class":553,"line":1143},20,[1145,1150,1154,1158,1163,1167],{"type":115,"tag":551,"props":1146,"children":1147},{"style":679},[1148],{"type":120,"value":1149},"  cwd",{"type":115,"tag":551,"props":1151,"children":1152},{"style":564},[1153],{"type":120,"value":687},{"type":115,"tag":551,"props":1155,"children":1156},{"style":564},[1157],{"type":120,"value":588},{"type":115,"tag":551,"props":1159,"children":1160},{"style":591},[1161],{"type":120,"value":1162},"\u002Fvercel\u002Fsandbox\u002Fapp",{"type":115,"tag":551,"props":1164,"children":1165},{"style":564},[1166],{"type":120,"value":598},{"type":115,"tag":551,"props":1168,"children":1169},{"style":564},[1170],{"type":120,"value":762},{"type":115,"tag":551,"props":1172,"children":1174},{"class":553,"line":1173},21,[1175,1179,1183,1187,1192,1196,1200,1205,1209,1214],{"type":115,"tag":551,"props":1176,"children":1177},{"style":679},[1178],{"type":120,"value":718},{"type":115,"tag":551,"props":1180,"children":1181},{"style":564},[1182],{"type":120,"value":687},{"type":115,"tag":551,"props":1184,"children":1185},{"style":564},[1186],{"type":120,"value":567},{"type":115,"tag":551,"props":1188,"children":1189},{"style":679},[1190],{"type":120,"value":1191}," NODE_ENV",{"type":115,"tag":551,"props":1193,"children":1194},{"style":564},[1195],{"type":120,"value":687},{"type":115,"tag":551,"props":1197,"children":1198},{"style":564},[1199],{"type":120,"value":588},{"type":115,"tag":551,"props":1201,"children":1202},{"style":591},[1203],{"type":120,"value":1204},"development",{"type":115,"tag":551,"props":1206,"children":1207},{"style":564},[1208],{"type":120,"value":598},{"type":115,"tag":551,"props":1210,"children":1211},{"style":564},[1212],{"type":120,"value":1213}," },",{"type":115,"tag":551,"props":1215,"children":1216},{"style":620},[1217],{"type":120,"value":1218}," \u002F\u002F overrides creation-level NODE_ENV\n",{"type":115,"tag":551,"props":1220,"children":1222},{"class":553,"line":1221},22,[1223,1228,1232,1238],{"type":115,"tag":551,"props":1224,"children":1225},{"style":679},[1226],{"type":120,"value":1227},"  sudo",{"type":115,"tag":551,"props":1229,"children":1230},{"style":564},[1231],{"type":120,"value":687},{"type":115,"tag":551,"props":1233,"children":1235},{"style":1234},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1236],{"type":120,"value":1237}," true",{"type":115,"tag":551,"props":1239,"children":1240},{"style":564},[1241],{"type":120,"value":762},{"type":115,"tag":551,"props":1243,"children":1245},{"class":553,"line":1244},23,[1246,1250,1254],{"type":115,"tag":551,"props":1247,"children":1248},{"style":564},[1249],{"type":120,"value":821},{"type":115,"tag":551,"props":1251,"children":1252},{"style":570},[1253],{"type":120,"value":419},{"type":115,"tag":551,"props":1255,"children":1256},{"style":564},[1257],{"type":120,"value":603},{"type":115,"tag":551,"props":1259,"children":1261},{"class":553,"line":1260},24,[1262],{"type":115,"tag":551,"props":1263,"children":1264},{"emptyLinePlaceholder":610},[1265],{"type":120,"value":613},{"type":115,"tag":551,"props":1267,"children":1269},{"class":553,"line":1268},25,[1270],{"type":115,"tag":551,"props":1271,"children":1272},{"style":620},[1273],{"type":120,"value":1274},"\u002F\u002F Detached execution (long-running processes)\n",{"type":115,"tag":551,"props":1276,"children":1278},{"class":553,"line":1277},26,[1279,1283,1288,1292,1296,1300,1304,1308,1312],{"type":115,"tag":551,"props":1280,"children":1281},{"style":629},[1282],{"type":120,"value":632},{"type":115,"tag":551,"props":1284,"children":1285},{"style":570},[1286],{"type":120,"value":1287}," cmd ",{"type":115,"tag":551,"props":1289,"children":1290},{"style":564},[1291],{"type":120,"value":642},{"type":115,"tag":551,"props":1293,"children":1294},{"style":558},[1295],{"type":120,"value":647},{"type":115,"tag":551,"props":1297,"children":1298},{"style":570},[1299],{"type":120,"value":872},{"type":115,"tag":551,"props":1301,"children":1302},{"style":564},[1303],{"type":120,"value":656},{"type":115,"tag":551,"props":1305,"children":1306},{"style":659},[1307],{"type":120,"value":881},{"type":115,"tag":551,"props":1309,"children":1310},{"style":570},[1311],{"type":120,"value":667},{"type":115,"tag":551,"props":1313,"children":1314},{"style":564},[1315],{"type":120,"value":672},{"type":115,"tag":551,"props":1317,"children":1319},{"class":553,"line":1318},27,[1320,1324,1328,1332,1336,1340],{"type":115,"tag":551,"props":1321,"children":1322},{"style":679},[1323],{"type":120,"value":1063},{"type":115,"tag":551,"props":1325,"children":1326},{"style":564},[1327],{"type":120,"value":687},{"type":115,"tag":551,"props":1329,"children":1330},{"style":564},[1331],{"type":120,"value":588},{"type":115,"tag":551,"props":1333,"children":1334},{"style":591},[1335],{"type":120,"value":894},{"type":115,"tag":551,"props":1337,"children":1338},{"style":564},[1339],{"type":120,"value":598},{"type":115,"tag":551,"props":1341,"children":1342},{"style":564},[1343],{"type":120,"value":762},{"type":115,"tag":551,"props":1345,"children":1347},{"class":553,"line":1346},28,[1348,1352,1356,1360,1364,1369,1373,1377],{"type":115,"tag":551,"props":1349,"children":1350},{"style":679},[1351],{"type":120,"value":1093},{"type":115,"tag":551,"props":1353,"children":1354},{"style":564},[1355],{"type":120,"value":687},{"type":115,"tag":551,"props":1357,"children":1358},{"style":570},[1359],{"type":120,"value":907},{"type":115,"tag":551,"props":1361,"children":1362},{"style":564},[1363],{"type":120,"value":598},{"type":115,"tag":551,"props":1365,"children":1366},{"style":591},[1367],{"type":120,"value":1368},"server.js",{"type":115,"tag":551,"props":1370,"children":1371},{"style":564},[1372],{"type":120,"value":598},{"type":115,"tag":551,"props":1374,"children":1375},{"style":570},[1376],{"type":120,"value":1136},{"type":115,"tag":551,"props":1378,"children":1379},{"style":564},[1380],{"type":120,"value":762},{"type":115,"tag":551,"props":1382,"children":1384},{"class":553,"line":1383},29,[1385,1390,1394,1398],{"type":115,"tag":551,"props":1386,"children":1387},{"style":679},[1388],{"type":120,"value":1389},"  detached",{"type":115,"tag":551,"props":1391,"children":1392},{"style":564},[1393],{"type":120,"value":687},{"type":115,"tag":551,"props":1395,"children":1396},{"style":1234},[1397],{"type":120,"value":1237},{"type":115,"tag":551,"props":1399,"children":1400},{"style":564},[1401],{"type":120,"value":762},{"type":115,"tag":551,"props":1403,"children":1405},{"class":553,"line":1404},30,[1406,1410,1414],{"type":115,"tag":551,"props":1407,"children":1408},{"style":564},[1409],{"type":120,"value":821},{"type":115,"tag":551,"props":1411,"children":1412},{"style":570},[1413],{"type":120,"value":419},{"type":115,"tag":551,"props":1415,"children":1416},{"style":564},[1417],{"type":120,"value":603},{"type":115,"tag":551,"props":1419,"children":1421},{"class":553,"line":1420},31,[1422],{"type":115,"tag":551,"props":1423,"children":1424},{"style":620},[1425],{"type":120,"value":1426},"\u002F\u002F Stream logs in real-time\n",{"type":115,"tag":551,"props":1428,"children":1430},{"class":553,"line":1429},32,[1431,1436,1440,1445,1449,1454,1459,1464,1468,1473,1478],{"type":115,"tag":551,"props":1432,"children":1433},{"style":558},[1434],{"type":120,"value":1435},"for",{"type":115,"tag":551,"props":1437,"children":1438},{"style":558},[1439],{"type":120,"value":647},{"type":115,"tag":551,"props":1441,"children":1442},{"style":570},[1443],{"type":120,"value":1444}," (",{"type":115,"tag":551,"props":1446,"children":1447},{"style":629},[1448],{"type":120,"value":632},{"type":115,"tag":551,"props":1450,"children":1451},{"style":570},[1452],{"type":120,"value":1453}," log ",{"type":115,"tag":551,"props":1455,"children":1456},{"style":564},[1457],{"type":120,"value":1458},"of",{"type":115,"tag":551,"props":1460,"children":1461},{"style":570},[1462],{"type":120,"value":1463}," cmd",{"type":115,"tag":551,"props":1465,"children":1466},{"style":564},[1467],{"type":120,"value":656},{"type":115,"tag":551,"props":1469,"children":1470},{"style":659},[1471],{"type":120,"value":1472},"logs",{"type":115,"tag":551,"props":1474,"children":1475},{"style":570},[1476],{"type":120,"value":1477},"()) ",{"type":115,"tag":551,"props":1479,"children":1480},{"style":564},[1481],{"type":120,"value":672},{"type":115,"tag":551,"props":1483,"children":1485},{"class":553,"line":1484},33,[1486,1491,1495,1500,1504,1509,1514,1519,1523,1527,1532,1536,1541,1545,1549,1553,1558,1563,1567],{"type":115,"tag":551,"props":1487,"children":1488},{"style":570},[1489],{"type":120,"value":1490},"  console",{"type":115,"tag":551,"props":1492,"children":1493},{"style":564},[1494],{"type":120,"value":656},{"type":115,"tag":551,"props":1496,"children":1497},{"style":659},[1498],{"type":120,"value":1499},"log",{"type":115,"tag":551,"props":1501,"children":1502},{"style":679},[1503],{"type":120,"value":667},{"type":115,"tag":551,"props":1505,"children":1506},{"style":564},[1507],{"type":120,"value":1508},"`",{"type":115,"tag":551,"props":1510,"children":1511},{"style":591},[1512],{"type":120,"value":1513},"[",{"type":115,"tag":551,"props":1515,"children":1516},{"style":564},[1517],{"type":120,"value":1518},"${",{"type":115,"tag":551,"props":1520,"children":1521},{"style":570},[1522],{"type":120,"value":1499},{"type":115,"tag":551,"props":1524,"children":1525},{"style":564},[1526],{"type":120,"value":656},{"type":115,"tag":551,"props":1528,"children":1529},{"style":570},[1530],{"type":120,"value":1531},"stream",{"type":115,"tag":551,"props":1533,"children":1534},{"style":564},[1535],{"type":120,"value":821},{"type":115,"tag":551,"props":1537,"children":1538},{"style":591},[1539],{"type":120,"value":1540},"] ",{"type":115,"tag":551,"props":1542,"children":1543},{"style":564},[1544],{"type":120,"value":1518},{"type":115,"tag":551,"props":1546,"children":1547},{"style":570},[1548],{"type":120,"value":1499},{"type":115,"tag":551,"props":1550,"children":1551},{"style":564},[1552],{"type":120,"value":656},{"type":115,"tag":551,"props":1554,"children":1555},{"style":570},[1556],{"type":120,"value":1557},"data",{"type":115,"tag":551,"props":1559,"children":1560},{"style":564},[1561],{"type":120,"value":1562},"}`",{"type":115,"tag":551,"props":1564,"children":1565},{"style":679},[1566],{"type":120,"value":419},{"type":115,"tag":551,"props":1568,"children":1569},{"style":564},[1570],{"type":120,"value":603},{"type":115,"tag":551,"props":1572,"children":1574},{"class":553,"line":1573},34,[1575],{"type":115,"tag":551,"props":1576,"children":1577},{"style":564},[1578],{"type":120,"value":1579},"}\n",{"type":115,"tag":551,"props":1581,"children":1583},{"class":553,"line":1582},35,[1584,1589,1593,1597,1602,1606,1610],{"type":115,"tag":551,"props":1585,"children":1586},{"style":558},[1587],{"type":120,"value":1588},"await",{"type":115,"tag":551,"props":1590,"children":1591},{"style":570},[1592],{"type":120,"value":1463},{"type":115,"tag":551,"props":1594,"children":1595},{"style":564},[1596],{"type":120,"value":656},{"type":115,"tag":551,"props":1598,"children":1599},{"style":659},[1600],{"type":120,"value":1601},"wait",{"type":115,"tag":551,"props":1603,"children":1604},{"style":570},[1605],{"type":120,"value":986},{"type":115,"tag":551,"props":1607,"children":1608},{"style":564},[1609],{"type":120,"value":991},{"type":115,"tag":551,"props":1611,"children":1612},{"style":620},[1613],{"type":120,"value":1614}," \u002F\u002F block until completion\n",{"type":115,"tag":533,"props":1616,"children":1618},{"id":1617},"file-operations",[1619],{"type":120,"value":1620},"File Operations",{"type":115,"tag":540,"props":1622,"children":1624},{"className":542,"code":1623,"language":544,"meta":545,"style":545},"\u002F\u002F Write files (takes array of { path, content: Buffer })\nawait sandbox.writeFiles([\n  { path: 'app.js', content: Buffer.from('console.log(\"hello\")') },\n  { path: 'package.json', content: Buffer.from('{\"type\":\"module\"}') },\n]);\n\n\u002F\u002F Read a file (returns Buffer or null)\nconst buf = await sandbox.readFileToBuffer({ path: 'app.js' });\n\n\u002F\u002F Read as stream\nconst stream = await sandbox.readFile({ path: 'app.js' });\n\n\u002F\u002F Download to local filesystem\nawait sandbox.downloadFile('output.zip', '.\u002Flocal-output.zip');\n\n\u002F\u002F Create directory\nawait sandbox.mkDir('src\u002Fcomponents');\n",[1625],{"type":115,"tag":63,"props":1626,"children":1627},{"__ignoreMap":545},[1628,1636,1660,1744,1821,1832,1839,1847,1921,1928,1936,2008,2015,2023,2085,2092,2100],{"type":115,"tag":551,"props":1629,"children":1630},{"class":553,"line":554},[1631],{"type":115,"tag":551,"props":1632,"children":1633},{"style":620},[1634],{"type":120,"value":1635},"\u002F\u002F Write files (takes array of { path, content: Buffer })\n",{"type":115,"tag":551,"props":1637,"children":1638},{"class":553,"line":606},[1639,1643,1647,1651,1655],{"type":115,"tag":551,"props":1640,"children":1641},{"style":558},[1642],{"type":120,"value":1588},{"type":115,"tag":551,"props":1644,"children":1645},{"style":570},[1646],{"type":120,"value":872},{"type":115,"tag":551,"props":1648,"children":1649},{"style":564},[1650],{"type":120,"value":656},{"type":115,"tag":551,"props":1652,"children":1653},{"style":659},[1654],{"type":120,"value":184},{"type":115,"tag":551,"props":1656,"children":1657},{"style":570},[1658],{"type":120,"value":1659},"([\n",{"type":115,"tag":551,"props":1661,"children":1662},{"class":553,"line":616},[1663,1668,1673,1677,1681,1686,1690,1694,1699,1703,1708,1712,1717,1721,1725,1730,1734,1739],{"type":115,"tag":551,"props":1664,"children":1665},{"style":564},[1666],{"type":120,"value":1667},"  {",{"type":115,"tag":551,"props":1669,"children":1670},{"style":679},[1671],{"type":120,"value":1672}," path",{"type":115,"tag":551,"props":1674,"children":1675},{"style":564},[1676],{"type":120,"value":687},{"type":115,"tag":551,"props":1678,"children":1679},{"style":564},[1680],{"type":120,"value":588},{"type":115,"tag":551,"props":1682,"children":1683},{"style":591},[1684],{"type":120,"value":1685},"app.js",{"type":115,"tag":551,"props":1687,"children":1688},{"style":564},[1689],{"type":120,"value":598},{"type":115,"tag":551,"props":1691,"children":1692},{"style":564},[1693],{"type":120,"value":704},{"type":115,"tag":551,"props":1695,"children":1696},{"style":679},[1697],{"type":120,"value":1698}," content",{"type":115,"tag":551,"props":1700,"children":1701},{"style":564},[1702],{"type":120,"value":687},{"type":115,"tag":551,"props":1704,"children":1705},{"style":570},[1706],{"type":120,"value":1707}," Buffer",{"type":115,"tag":551,"props":1709,"children":1710},{"style":564},[1711],{"type":120,"value":656},{"type":115,"tag":551,"props":1713,"children":1714},{"style":659},[1715],{"type":120,"value":1716},"from",{"type":115,"tag":551,"props":1718,"children":1719},{"style":570},[1720],{"type":120,"value":667},{"type":115,"tag":551,"props":1722,"children":1723},{"style":564},[1724],{"type":120,"value":598},{"type":115,"tag":551,"props":1726,"children":1727},{"style":591},[1728],{"type":120,"value":1729},"console.log(\"hello\")",{"type":115,"tag":551,"props":1731,"children":1732},{"style":564},[1733],{"type":120,"value":598},{"type":115,"tag":551,"props":1735,"children":1736},{"style":570},[1737],{"type":120,"value":1738},") ",{"type":115,"tag":551,"props":1740,"children":1741},{"style":564},[1742],{"type":120,"value":1743},"},\n",{"type":115,"tag":551,"props":1745,"children":1746},{"class":553,"line":42},[1747,1751,1755,1759,1763,1768,1772,1776,1780,1784,1788,1792,1796,1800,1804,1809,1813,1817],{"type":115,"tag":551,"props":1748,"children":1749},{"style":564},[1750],{"type":120,"value":1667},{"type":115,"tag":551,"props":1752,"children":1753},{"style":679},[1754],{"type":120,"value":1672},{"type":115,"tag":551,"props":1756,"children":1757},{"style":564},[1758],{"type":120,"value":687},{"type":115,"tag":551,"props":1760,"children":1761},{"style":564},[1762],{"type":120,"value":588},{"type":115,"tag":551,"props":1764,"children":1765},{"style":591},[1766],{"type":120,"value":1767},"package.json",{"type":115,"tag":551,"props":1769,"children":1770},{"style":564},[1771],{"type":120,"value":598},{"type":115,"tag":551,"props":1773,"children":1774},{"style":564},[1775],{"type":120,"value":704},{"type":115,"tag":551,"props":1777,"children":1778},{"style":679},[1779],{"type":120,"value":1698},{"type":115,"tag":551,"props":1781,"children":1782},{"style":564},[1783],{"type":120,"value":687},{"type":115,"tag":551,"props":1785,"children":1786},{"style":570},[1787],{"type":120,"value":1707},{"type":115,"tag":551,"props":1789,"children":1790},{"style":564},[1791],{"type":120,"value":656},{"type":115,"tag":551,"props":1793,"children":1794},{"style":659},[1795],{"type":120,"value":1716},{"type":115,"tag":551,"props":1797,"children":1798},{"style":570},[1799],{"type":120,"value":667},{"type":115,"tag":551,"props":1801,"children":1802},{"style":564},[1803],{"type":120,"value":598},{"type":115,"tag":551,"props":1805,"children":1806},{"style":591},[1807],{"type":120,"value":1808},"{\"type\":\"module\"}",{"type":115,"tag":551,"props":1810,"children":1811},{"style":564},[1812],{"type":120,"value":598},{"type":115,"tag":551,"props":1814,"children":1815},{"style":570},[1816],{"type":120,"value":1738},{"type":115,"tag":551,"props":1818,"children":1819},{"style":564},[1820],{"type":120,"value":1743},{"type":115,"tag":551,"props":1822,"children":1823},{"class":553,"line":675},[1824,1828],{"type":115,"tag":551,"props":1825,"children":1826},{"style":570},[1827],{"type":120,"value":942},{"type":115,"tag":551,"props":1829,"children":1830},{"style":564},[1831],{"type":120,"value":603},{"type":115,"tag":551,"props":1833,"children":1834},{"class":553,"line":712},[1835],{"type":115,"tag":551,"props":1836,"children":1837},{"emptyLinePlaceholder":610},[1838],{"type":120,"value":613},{"type":115,"tag":551,"props":1840,"children":1841},{"class":553,"line":734},[1842],{"type":115,"tag":551,"props":1843,"children":1844},{"style":620},[1845],{"type":120,"value":1846},"\u002F\u002F Read a file (returns Buffer or null)\n",{"type":115,"tag":551,"props":1848,"children":1849},{"class":553,"line":765},[1850,1854,1859,1863,1867,1871,1875,1880,1884,1889,1893,1897,1901,1905,1909,1913,1917],{"type":115,"tag":551,"props":1851,"children":1852},{"style":629},[1853],{"type":120,"value":632},{"type":115,"tag":551,"props":1855,"children":1856},{"style":570},[1857],{"type":120,"value":1858}," buf ",{"type":115,"tag":551,"props":1860,"children":1861},{"style":564},[1862],{"type":120,"value":642},{"type":115,"tag":551,"props":1864,"children":1865},{"style":558},[1866],{"type":120,"value":647},{"type":115,"tag":551,"props":1868,"children":1869},{"style":570},[1870],{"type":120,"value":872},{"type":115,"tag":551,"props":1872,"children":1873},{"style":564},[1874],{"type":120,"value":656},{"type":115,"tag":551,"props":1876,"children":1877},{"style":659},[1878],{"type":120,"value":1879},"readFileToBuffer",{"type":115,"tag":551,"props":1881,"children":1882},{"style":570},[1883],{"type":120,"value":667},{"type":115,"tag":551,"props":1885,"children":1886},{"style":564},[1887],{"type":120,"value":1888},"{",{"type":115,"tag":551,"props":1890,"children":1891},{"style":679},[1892],{"type":120,"value":1672},{"type":115,"tag":551,"props":1894,"children":1895},{"style":564},[1896],{"type":120,"value":687},{"type":115,"tag":551,"props":1898,"children":1899},{"style":564},[1900],{"type":120,"value":588},{"type":115,"tag":551,"props":1902,"children":1903},{"style":591},[1904],{"type":120,"value":1685},{"type":115,"tag":551,"props":1906,"children":1907},{"style":564},[1908],{"type":120,"value":598},{"type":115,"tag":551,"props":1910,"children":1911},{"style":564},[1912],{"type":120,"value":578},{"type":115,"tag":551,"props":1914,"children":1915},{"style":570},[1916],{"type":120,"value":419},{"type":115,"tag":551,"props":1918,"children":1919},{"style":564},[1920],{"type":120,"value":603},{"type":115,"tag":551,"props":1922,"children":1923},{"class":553,"line":806},[1924],{"type":115,"tag":551,"props":1925,"children":1926},{"emptyLinePlaceholder":610},[1927],{"type":120,"value":613},{"type":115,"tag":551,"props":1929,"children":1930},{"class":553,"line":815},[1931],{"type":115,"tag":551,"props":1932,"children":1933},{"style":620},[1934],{"type":120,"value":1935},"\u002F\u002F Read as stream\n",{"type":115,"tag":551,"props":1937,"children":1938},{"class":553,"line":832},[1939,1943,1948,1952,1956,1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000,2004],{"type":115,"tag":551,"props":1940,"children":1941},{"style":629},[1942],{"type":120,"value":632},{"type":115,"tag":551,"props":1944,"children":1945},{"style":570},[1946],{"type":120,"value":1947}," stream ",{"type":115,"tag":551,"props":1949,"children":1950},{"style":564},[1951],{"type":120,"value":642},{"type":115,"tag":551,"props":1953,"children":1954},{"style":558},[1955],{"type":120,"value":647},{"type":115,"tag":551,"props":1957,"children":1958},{"style":570},[1959],{"type":120,"value":872},{"type":115,"tag":551,"props":1961,"children":1962},{"style":564},[1963],{"type":120,"value":656},{"type":115,"tag":551,"props":1965,"children":1966},{"style":659},[1967],{"type":120,"value":192},{"type":115,"tag":551,"props":1969,"children":1970},{"style":570},[1971],{"type":120,"value":667},{"type":115,"tag":551,"props":1973,"children":1974},{"style":564},[1975],{"type":120,"value":1888},{"type":115,"tag":551,"props":1977,"children":1978},{"style":679},[1979],{"type":120,"value":1672},{"type":115,"tag":551,"props":1981,"children":1982},{"style":564},[1983],{"type":120,"value":687},{"type":115,"tag":551,"props":1985,"children":1986},{"style":564},[1987],{"type":120,"value":588},{"type":115,"tag":551,"props":1989,"children":1990},{"style":591},[1991],{"type":120,"value":1685},{"type":115,"tag":551,"props":1993,"children":1994},{"style":564},[1995],{"type":120,"value":598},{"type":115,"tag":551,"props":1997,"children":1998},{"style":564},[1999],{"type":120,"value":578},{"type":115,"tag":551,"props":2001,"children":2002},{"style":570},[2003],{"type":120,"value":419},{"type":115,"tag":551,"props":2005,"children":2006},{"style":564},[2007],{"type":120,"value":603},{"type":115,"tag":551,"props":2009,"children":2010},{"class":553,"line":840},[2011],{"type":115,"tag":551,"props":2012,"children":2013},{"emptyLinePlaceholder":610},[2014],{"type":120,"value":613},{"type":115,"tag":551,"props":2016,"children":2017},{"class":553,"line":849},[2018],{"type":115,"tag":551,"props":2019,"children":2020},{"style":620},[2021],{"type":120,"value":2022},"\u002F\u002F Download to local filesystem\n",{"type":115,"tag":551,"props":2024,"children":2025},{"class":553,"line":949},[2026,2030,2034,2038,2043,2047,2051,2056,2060,2064,2068,2073,2077,2081],{"type":115,"tag":551,"props":2027,"children":2028},{"style":558},[2029],{"type":120,"value":1588},{"type":115,"tag":551,"props":2031,"children":2032},{"style":570},[2033],{"type":120,"value":872},{"type":115,"tag":551,"props":2035,"children":2036},{"style":564},[2037],{"type":120,"value":656},{"type":115,"tag":551,"props":2039,"children":2040},{"style":659},[2041],{"type":120,"value":2042},"downloadFile",{"type":115,"tag":551,"props":2044,"children":2045},{"style":570},[2046],{"type":120,"value":667},{"type":115,"tag":551,"props":2048,"children":2049},{"style":564},[2050],{"type":120,"value":598},{"type":115,"tag":551,"props":2052,"children":2053},{"style":591},[2054],{"type":120,"value":2055},"output.zip",{"type":115,"tag":551,"props":2057,"children":2058},{"style":564},[2059],{"type":120,"value":598},{"type":115,"tag":551,"props":2061,"children":2062},{"style":564},[2063],{"type":120,"value":704},{"type":115,"tag":551,"props":2065,"children":2066},{"style":564},[2067],{"type":120,"value":588},{"type":115,"tag":551,"props":2069,"children":2070},{"style":591},[2071],{"type":120,"value":2072},".\u002Flocal-output.zip",{"type":115,"tag":551,"props":2074,"children":2075},{"style":564},[2076],{"type":120,"value":598},{"type":115,"tag":551,"props":2078,"children":2079},{"style":570},[2080],{"type":120,"value":419},{"type":115,"tag":551,"props":2082,"children":2083},{"style":564},[2084],{"type":120,"value":603},{"type":115,"tag":551,"props":2086,"children":2087},{"class":553,"line":999},[2088],{"type":115,"tag":551,"props":2089,"children":2090},{"emptyLinePlaceholder":610},[2091],{"type":120,"value":613},{"type":115,"tag":551,"props":2093,"children":2094},{"class":553,"line":1007},[2095],{"type":115,"tag":551,"props":2096,"children":2097},{"style":620},[2098],{"type":120,"value":2099},"\u002F\u002F Create directory\n",{"type":115,"tag":551,"props":2101,"children":2102},{"class":553,"line":1016},[2103,2107,2111,2115,2120,2124,2128,2133,2137,2141],{"type":115,"tag":551,"props":2104,"children":2105},{"style":558},[2106],{"type":120,"value":1588},{"type":115,"tag":551,"props":2108,"children":2109},{"style":570},[2110],{"type":120,"value":872},{"type":115,"tag":551,"props":2112,"children":2113},{"style":564},[2114],{"type":120,"value":656},{"type":115,"tag":551,"props":2116,"children":2117},{"style":659},[2118],{"type":120,"value":2119},"mkDir",{"type":115,"tag":551,"props":2121,"children":2122},{"style":570},[2123],{"type":120,"value":667},{"type":115,"tag":551,"props":2125,"children":2126},{"style":564},[2127],{"type":120,"value":598},{"type":115,"tag":551,"props":2129,"children":2130},{"style":591},[2131],{"type":120,"value":2132},"src\u002Fcomponents",{"type":115,"tag":551,"props":2134,"children":2135},{"style":564},[2136],{"type":120,"value":598},{"type":115,"tag":551,"props":2138,"children":2139},{"style":570},[2140],{"type":120,"value":419},{"type":115,"tag":551,"props":2142,"children":2143},{"style":564},[2144],{"type":120,"value":603},{"type":115,"tag":533,"props":2146,"children":2148},{"id":2147},"source-initialization",[2149],{"type":120,"value":2150},"Source Initialization",{"type":115,"tag":540,"props":2152,"children":2154},{"className":542,"code":2153,"language":544,"meta":545,"style":545},"\u002F\u002F Clone a git repo\nconst sandbox = await Sandbox.create({\n  source: { type: 'git', url: 'https:\u002F\u002Fgithub.com\u002Fuser\u002Frepo', depth: 1 },\n});\n\n\u002F\u002F Mount a tarball\nconst sandbox = await Sandbox.create({\n  source: { type: 'tarball', url: 'https:\u002F\u002Fexample.com\u002Fproject.tar.gz' },\n});\n\n\u002F\u002F Restore from snapshot\nconst sandbox = await Sandbox.create({\n  source: { type: 'snapshot', snapshotId: 'snap_abc123' },\n});\n",[2155],{"type":115,"tag":63,"props":2156,"children":2157},{"__ignoreMap":545},[2158,2166,2205,2292,2307,2314,2322,2361,2426,2441,2448,2456,2495,2561],{"type":115,"tag":551,"props":2159,"children":2160},{"class":553,"line":554},[2161],{"type":115,"tag":551,"props":2162,"children":2163},{"style":620},[2164],{"type":120,"value":2165},"\u002F\u002F Clone a git repo\n",{"type":115,"tag":551,"props":2167,"children":2168},{"class":553,"line":606},[2169,2173,2177,2181,2185,2189,2193,2197,2201],{"type":115,"tag":551,"props":2170,"children":2171},{"style":629},[2172],{"type":120,"value":632},{"type":115,"tag":551,"props":2174,"children":2175},{"style":570},[2176],{"type":120,"value":637},{"type":115,"tag":551,"props":2178,"children":2179},{"style":564},[2180],{"type":120,"value":642},{"type":115,"tag":551,"props":2182,"children":2183},{"style":558},[2184],{"type":120,"value":647},{"type":115,"tag":551,"props":2186,"children":2187},{"style":570},[2188],{"type":120,"value":573},{"type":115,"tag":551,"props":2190,"children":2191},{"style":564},[2192],{"type":120,"value":656},{"type":115,"tag":551,"props":2194,"children":2195},{"style":659},[2196],{"type":120,"value":662},{"type":115,"tag":551,"props":2198,"children":2199},{"style":570},[2200],{"type":120,"value":667},{"type":115,"tag":551,"props":2202,"children":2203},{"style":564},[2204],{"type":120,"value":672},{"type":115,"tag":551,"props":2206,"children":2207},{"class":553,"line":616},[2208,2213,2217,2221,2226,2230,2234,2238,2242,2246,2251,2255,2259,2264,2268,2272,2277,2281,2287],{"type":115,"tag":551,"props":2209,"children":2210},{"style":679},[2211],{"type":120,"value":2212},"  source",{"type":115,"tag":551,"props":2214,"children":2215},{"style":564},[2216],{"type":120,"value":687},{"type":115,"tag":551,"props":2218,"children":2219},{"style":564},[2220],{"type":120,"value":567},{"type":115,"tag":551,"props":2222,"children":2223},{"style":679},[2224],{"type":120,"value":2225}," type",{"type":115,"tag":551,"props":2227,"children":2228},{"style":564},[2229],{"type":120,"value":687},{"type":115,"tag":551,"props":2231,"children":2232},{"style":564},[2233],{"type":120,"value":588},{"type":115,"tag":551,"props":2235,"children":2236},{"style":591},[2237],{"type":120,"value":396},{"type":115,"tag":551,"props":2239,"children":2240},{"style":564},[2241],{"type":120,"value":598},{"type":115,"tag":551,"props":2243,"children":2244},{"style":564},[2245],{"type":120,"value":704},{"type":115,"tag":551,"props":2247,"children":2248},{"style":679},[2249],{"type":120,"value":2250}," url",{"type":115,"tag":551,"props":2252,"children":2253},{"style":564},[2254],{"type":120,"value":687},{"type":115,"tag":551,"props":2256,"children":2257},{"style":564},[2258],{"type":120,"value":588},{"type":115,"tag":551,"props":2260,"children":2261},{"style":591},[2262],{"type":120,"value":2263},"https:\u002F\u002Fgithub.com\u002Fuser\u002Frepo",{"type":115,"tag":551,"props":2265,"children":2266},{"style":564},[2267],{"type":120,"value":598},{"type":115,"tag":551,"props":2269,"children":2270},{"style":564},[2271],{"type":120,"value":704},{"type":115,"tag":551,"props":2273,"children":2274},{"style":679},[2275],{"type":120,"value":2276}," depth",{"type":115,"tag":551,"props":2278,"children":2279},{"style":564},[2280],{"type":120,"value":687},{"type":115,"tag":551,"props":2282,"children":2284},{"style":2283},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[2285],{"type":120,"value":2286}," 1",{"type":115,"tag":551,"props":2288,"children":2289},{"style":564},[2290],{"type":120,"value":2291}," },\n",{"type":115,"tag":551,"props":2293,"children":2294},{"class":553,"line":42},[2295,2299,2303],{"type":115,"tag":551,"props":2296,"children":2297},{"style":564},[2298],{"type":120,"value":821},{"type":115,"tag":551,"props":2300,"children":2301},{"style":570},[2302],{"type":120,"value":419},{"type":115,"tag":551,"props":2304,"children":2305},{"style":564},[2306],{"type":120,"value":603},{"type":115,"tag":551,"props":2308,"children":2309},{"class":553,"line":675},[2310],{"type":115,"tag":551,"props":2311,"children":2312},{"emptyLinePlaceholder":610},[2313],{"type":120,"value":613},{"type":115,"tag":551,"props":2315,"children":2316},{"class":553,"line":712},[2317],{"type":115,"tag":551,"props":2318,"children":2319},{"style":620},[2320],{"type":120,"value":2321},"\u002F\u002F Mount a tarball\n",{"type":115,"tag":551,"props":2323,"children":2324},{"class":553,"line":734},[2325,2329,2333,2337,2341,2345,2349,2353,2357],{"type":115,"tag":551,"props":2326,"children":2327},{"style":629},[2328],{"type":120,"value":632},{"type":115,"tag":551,"props":2330,"children":2331},{"style":570},[2332],{"type":120,"value":637},{"type":115,"tag":551,"props":2334,"children":2335},{"style":564},[2336],{"type":120,"value":642},{"type":115,"tag":551,"props":2338,"children":2339},{"style":558},[2340],{"type":120,"value":647},{"type":115,"tag":551,"props":2342,"children":2343},{"style":570},[2344],{"type":120,"value":573},{"type":115,"tag":551,"props":2346,"children":2347},{"style":564},[2348],{"type":120,"value":656},{"type":115,"tag":551,"props":2350,"children":2351},{"style":659},[2352],{"type":120,"value":662},{"type":115,"tag":551,"props":2354,"children":2355},{"style":570},[2356],{"type":120,"value":667},{"type":115,"tag":551,"props":2358,"children":2359},{"style":564},[2360],{"type":120,"value":672},{"type":115,"tag":551,"props":2362,"children":2363},{"class":553,"line":765},[2364,2368,2372,2376,2380,2384,2388,2393,2397,2401,2405,2409,2413,2418,2422],{"type":115,"tag":551,"props":2365,"children":2366},{"style":679},[2367],{"type":120,"value":2212},{"type":115,"tag":551,"props":2369,"children":2370},{"style":564},[2371],{"type":120,"value":687},{"type":115,"tag":551,"props":2373,"children":2374},{"style":564},[2375],{"type":120,"value":567},{"type":115,"tag":551,"props":2377,"children":2378},{"style":679},[2379],{"type":120,"value":2225},{"type":115,"tag":551,"props":2381,"children":2382},{"style":564},[2383],{"type":120,"value":687},{"type":115,"tag":551,"props":2385,"children":2386},{"style":564},[2387],{"type":120,"value":588},{"type":115,"tag":551,"props":2389,"children":2390},{"style":591},[2391],{"type":120,"value":2392},"tarball",{"type":115,"tag":551,"props":2394,"children":2395},{"style":564},[2396],{"type":120,"value":598},{"type":115,"tag":551,"props":2398,"children":2399},{"style":564},[2400],{"type":120,"value":704},{"type":115,"tag":551,"props":2402,"children":2403},{"style":679},[2404],{"type":120,"value":2250},{"type":115,"tag":551,"props":2406,"children":2407},{"style":564},[2408],{"type":120,"value":687},{"type":115,"tag":551,"props":2410,"children":2411},{"style":564},[2412],{"type":120,"value":588},{"type":115,"tag":551,"props":2414,"children":2415},{"style":591},[2416],{"type":120,"value":2417},"https:\u002F\u002Fexample.com\u002Fproject.tar.gz",{"type":115,"tag":551,"props":2419,"children":2420},{"style":564},[2421],{"type":120,"value":598},{"type":115,"tag":551,"props":2423,"children":2424},{"style":564},[2425],{"type":120,"value":2291},{"type":115,"tag":551,"props":2427,"children":2428},{"class":553,"line":806},[2429,2433,2437],{"type":115,"tag":551,"props":2430,"children":2431},{"style":564},[2432],{"type":120,"value":821},{"type":115,"tag":551,"props":2434,"children":2435},{"style":570},[2436],{"type":120,"value":419},{"type":115,"tag":551,"props":2438,"children":2439},{"style":564},[2440],{"type":120,"value":603},{"type":115,"tag":551,"props":2442,"children":2443},{"class":553,"line":815},[2444],{"type":115,"tag":551,"props":2445,"children":2446},{"emptyLinePlaceholder":610},[2447],{"type":120,"value":613},{"type":115,"tag":551,"props":2449,"children":2450},{"class":553,"line":832},[2451],{"type":115,"tag":551,"props":2452,"children":2453},{"style":620},[2454],{"type":120,"value":2455},"\u002F\u002F Restore from snapshot\n",{"type":115,"tag":551,"props":2457,"children":2458},{"class":553,"line":840},[2459,2463,2467,2471,2475,2479,2483,2487,2491],{"type":115,"tag":551,"props":2460,"children":2461},{"style":629},[2462],{"type":120,"value":632},{"type":115,"tag":551,"props":2464,"children":2465},{"style":570},[2466],{"type":120,"value":637},{"type":115,"tag":551,"props":2468,"children":2469},{"style":564},[2470],{"type":120,"value":642},{"type":115,"tag":551,"props":2472,"children":2473},{"style":558},[2474],{"type":120,"value":647},{"type":115,"tag":551,"props":2476,"children":2477},{"style":570},[2478],{"type":120,"value":573},{"type":115,"tag":551,"props":2480,"children":2481},{"style":564},[2482],{"type":120,"value":656},{"type":115,"tag":551,"props":2484,"children":2485},{"style":659},[2486],{"type":120,"value":662},{"type":115,"tag":551,"props":2488,"children":2489},{"style":570},[2490],{"type":120,"value":667},{"type":115,"tag":551,"props":2492,"children":2493},{"style":564},[2494],{"type":120,"value":672},{"type":115,"tag":551,"props":2496,"children":2497},{"class":553,"line":849},[2498,2502,2506,2510,2514,2518,2522,2527,2531,2535,2540,2544,2548,2553,2557],{"type":115,"tag":551,"props":2499,"children":2500},{"style":679},[2501],{"type":120,"value":2212},{"type":115,"tag":551,"props":2503,"children":2504},{"style":564},[2505],{"type":120,"value":687},{"type":115,"tag":551,"props":2507,"children":2508},{"style":564},[2509],{"type":120,"value":567},{"type":115,"tag":551,"props":2511,"children":2512},{"style":679},[2513],{"type":120,"value":2225},{"type":115,"tag":551,"props":2515,"children":2516},{"style":564},[2517],{"type":120,"value":687},{"type":115,"tag":551,"props":2519,"children":2520},{"style":564},[2521],{"type":120,"value":588},{"type":115,"tag":551,"props":2523,"children":2524},{"style":591},[2525],{"type":120,"value":2526},"snapshot",{"type":115,"tag":551,"props":2528,"children":2529},{"style":564},[2530],{"type":120,"value":598},{"type":115,"tag":551,"props":2532,"children":2533},{"style":564},[2534],{"type":120,"value":704},{"type":115,"tag":551,"props":2536,"children":2537},{"style":679},[2538],{"type":120,"value":2539}," snapshotId",{"type":115,"tag":551,"props":2541,"children":2542},{"style":564},[2543],{"type":120,"value":687},{"type":115,"tag":551,"props":2545,"children":2546},{"style":564},[2547],{"type":120,"value":588},{"type":115,"tag":551,"props":2549,"children":2550},{"style":591},[2551],{"type":120,"value":2552},"snap_abc123",{"type":115,"tag":551,"props":2554,"children":2555},{"style":564},[2556],{"type":120,"value":598},{"type":115,"tag":551,"props":2558,"children":2559},{"style":564},[2560],{"type":120,"value":2291},{"type":115,"tag":551,"props":2562,"children":2563},{"class":553,"line":949},[2564,2568,2572],{"type":115,"tag":551,"props":2565,"children":2566},{"style":564},[2567],{"type":120,"value":821},{"type":115,"tag":551,"props":2569,"children":2570},{"style":570},[2571],{"type":120,"value":419},{"type":115,"tag":551,"props":2573,"children":2574},{"style":564},[2575],{"type":120,"value":603},{"type":115,"tag":533,"props":2577,"children":2579},{"id":2578},"snapshots-save-and-resume-vm-state",[2580],{"type":120,"value":2581},"Snapshots (Save and Resume VM State)",{"type":115,"tag":540,"props":2583,"children":2585},{"className":542,"code":2584,"language":544,"meta":545,"style":545},"\u002F\u002F Capture full VM state (filesystem + packages)\n\u002F\u002F WARNING: sandbox shuts down after snapshot creation\nconst snapshot = await sandbox.snapshot({ expiration: 86400_000 }); \u002F\u002F 24h\nconsole.log(snapshot.snapshotId);\n\n\u002F\u002F List and manage snapshots\nconst { snapshots } = await Snapshot.list();\nconst snap = await Snapshot.get({ snapshotId: 'snap_abc' });\nawait snap.delete();\n",[2586],{"type":115,"tag":63,"props":2587,"children":2588},{"__ignoreMap":545},[2589,2597,2605,2676,2710,2717,2725,2776,2850],{"type":115,"tag":551,"props":2590,"children":2591},{"class":553,"line":554},[2592],{"type":115,"tag":551,"props":2593,"children":2594},{"style":620},[2595],{"type":120,"value":2596},"\u002F\u002F Capture full VM state (filesystem + packages)\n",{"type":115,"tag":551,"props":2598,"children":2599},{"class":553,"line":606},[2600],{"type":115,"tag":551,"props":2601,"children":2602},{"style":620},[2603],{"type":120,"value":2604},"\u002F\u002F WARNING: sandbox shuts down after snapshot creation\n",{"type":115,"tag":551,"props":2606,"children":2607},{"class":553,"line":616},[2608,2612,2617,2621,2625,2629,2633,2637,2641,2645,2650,2654,2659,2663,2667,2671],{"type":115,"tag":551,"props":2609,"children":2610},{"style":629},[2611],{"type":120,"value":632},{"type":115,"tag":551,"props":2613,"children":2614},{"style":570},[2615],{"type":120,"value":2616}," snapshot ",{"type":115,"tag":551,"props":2618,"children":2619},{"style":564},[2620],{"type":120,"value":642},{"type":115,"tag":551,"props":2622,"children":2623},{"style":558},[2624],{"type":120,"value":647},{"type":115,"tag":551,"props":2626,"children":2627},{"style":570},[2628],{"type":120,"value":872},{"type":115,"tag":551,"props":2630,"children":2631},{"style":564},[2632],{"type":120,"value":656},{"type":115,"tag":551,"props":2634,"children":2635},{"style":659},[2636],{"type":120,"value":2526},{"type":115,"tag":551,"props":2638,"children":2639},{"style":570},[2640],{"type":120,"value":667},{"type":115,"tag":551,"props":2642,"children":2643},{"style":564},[2644],{"type":120,"value":1888},{"type":115,"tag":551,"props":2646,"children":2647},{"style":679},[2648],{"type":120,"value":2649}," expiration",{"type":115,"tag":551,"props":2651,"children":2652},{"style":564},[2653],{"type":120,"value":687},{"type":115,"tag":551,"props":2655,"children":2656},{"style":2283},[2657],{"type":120,"value":2658}," 86400_000",{"type":115,"tag":551,"props":2660,"children":2661},{"style":564},[2662],{"type":120,"value":578},{"type":115,"tag":551,"props":2664,"children":2665},{"style":570},[2666],{"type":120,"value":419},{"type":115,"tag":551,"props":2668,"children":2669},{"style":564},[2670],{"type":120,"value":991},{"type":115,"tag":551,"props":2672,"children":2673},{"style":620},[2674],{"type":120,"value":2675}," \u002F\u002F 24h\n",{"type":115,"tag":551,"props":2677,"children":2678},{"class":553,"line":42},[2679,2684,2688,2692,2697,2701,2706],{"type":115,"tag":551,"props":2680,"children":2681},{"style":570},[2682],{"type":120,"value":2683},"console",{"type":115,"tag":551,"props":2685,"children":2686},{"style":564},[2687],{"type":120,"value":656},{"type":115,"tag":551,"props":2689,"children":2690},{"style":659},[2691],{"type":120,"value":1499},{"type":115,"tag":551,"props":2693,"children":2694},{"style":570},[2695],{"type":120,"value":2696},"(snapshot",{"type":115,"tag":551,"props":2698,"children":2699},{"style":564},[2700],{"type":120,"value":656},{"type":115,"tag":551,"props":2702,"children":2703},{"style":570},[2704],{"type":120,"value":2705},"snapshotId)",{"type":115,"tag":551,"props":2707,"children":2708},{"style":564},[2709],{"type":120,"value":603},{"type":115,"tag":551,"props":2711,"children":2712},{"class":553,"line":675},[2713],{"type":115,"tag":551,"props":2714,"children":2715},{"emptyLinePlaceholder":610},[2716],{"type":120,"value":613},{"type":115,"tag":551,"props":2718,"children":2719},{"class":553,"line":712},[2720],{"type":115,"tag":551,"props":2721,"children":2722},{"style":620},[2723],{"type":120,"value":2724},"\u002F\u002F List and manage snapshots\n",{"type":115,"tag":551,"props":2726,"children":2727},{"class":553,"line":734},[2728,2732,2736,2741,2745,2750,2754,2759,2763,2768,2772],{"type":115,"tag":551,"props":2729,"children":2730},{"style":629},[2731],{"type":120,"value":632},{"type":115,"tag":551,"props":2733,"children":2734},{"style":564},[2735],{"type":120,"value":567},{"type":115,"tag":551,"props":2737,"children":2738},{"style":570},[2739],{"type":120,"value":2740}," snapshots ",{"type":115,"tag":551,"props":2742,"children":2743},{"style":564},[2744],{"type":120,"value":821},{"type":115,"tag":551,"props":2746,"children":2747},{"style":564},[2748],{"type":120,"value":2749}," =",{"type":115,"tag":551,"props":2751,"children":2752},{"style":558},[2753],{"type":120,"value":647},{"type":115,"tag":551,"props":2755,"children":2756},{"style":570},[2757],{"type":120,"value":2758}," Snapshot",{"type":115,"tag":551,"props":2760,"children":2761},{"style":564},[2762],{"type":120,"value":656},{"type":115,"tag":551,"props":2764,"children":2765},{"style":659},[2766],{"type":120,"value":2767},"list",{"type":115,"tag":551,"props":2769,"children":2770},{"style":570},[2771],{"type":120,"value":986},{"type":115,"tag":551,"props":2773,"children":2774},{"style":564},[2775],{"type":120,"value":603},{"type":115,"tag":551,"props":2777,"children":2778},{"class":553,"line":765},[2779,2783,2788,2792,2796,2800,2804,2809,2813,2817,2821,2825,2829,2834,2838,2842,2846],{"type":115,"tag":551,"props":2780,"children":2781},{"style":629},[2782],{"type":120,"value":632},{"type":115,"tag":551,"props":2784,"children":2785},{"style":570},[2786],{"type":120,"value":2787}," snap ",{"type":115,"tag":551,"props":2789,"children":2790},{"style":564},[2791],{"type":120,"value":642},{"type":115,"tag":551,"props":2793,"children":2794},{"style":558},[2795],{"type":120,"value":647},{"type":115,"tag":551,"props":2797,"children":2798},{"style":570},[2799],{"type":120,"value":2758},{"type":115,"tag":551,"props":2801,"children":2802},{"style":564},[2803],{"type":120,"value":656},{"type":115,"tag":551,"props":2805,"children":2806},{"style":659},[2807],{"type":120,"value":2808},"get",{"type":115,"tag":551,"props":2810,"children":2811},{"style":570},[2812],{"type":120,"value":667},{"type":115,"tag":551,"props":2814,"children":2815},{"style":564},[2816],{"type":120,"value":1888},{"type":115,"tag":551,"props":2818,"children":2819},{"style":679},[2820],{"type":120,"value":2539},{"type":115,"tag":551,"props":2822,"children":2823},{"style":564},[2824],{"type":120,"value":687},{"type":115,"tag":551,"props":2826,"children":2827},{"style":564},[2828],{"type":120,"value":588},{"type":115,"tag":551,"props":2830,"children":2831},{"style":591},[2832],{"type":120,"value":2833},"snap_abc",{"type":115,"tag":551,"props":2835,"children":2836},{"style":564},[2837],{"type":120,"value":598},{"type":115,"tag":551,"props":2839,"children":2840},{"style":564},[2841],{"type":120,"value":578},{"type":115,"tag":551,"props":2843,"children":2844},{"style":570},[2845],{"type":120,"value":419},{"type":115,"tag":551,"props":2847,"children":2848},{"style":564},[2849],{"type":120,"value":603},{"type":115,"tag":551,"props":2851,"children":2852},{"class":553,"line":806},[2853,2857,2862,2866,2871,2875],{"type":115,"tag":551,"props":2854,"children":2855},{"style":558},[2856],{"type":120,"value":1588},{"type":115,"tag":551,"props":2858,"children":2859},{"style":570},[2860],{"type":120,"value":2861}," snap",{"type":115,"tag":551,"props":2863,"children":2864},{"style":564},[2865],{"type":120,"value":656},{"type":115,"tag":551,"props":2867,"children":2868},{"style":659},[2869],{"type":120,"value":2870},"delete",{"type":115,"tag":551,"props":2872,"children":2873},{"style":570},[2874],{"type":120,"value":986},{"type":115,"tag":551,"props":2876,"children":2877},{"style":564},[2878],{"type":120,"value":603},{"type":115,"tag":533,"props":2880,"children":2882},{"id":2881},"network-policies-sni-filtering-cidr",[2883],{"type":120,"value":2884},"Network Policies (SNI Filtering + CIDR)",{"type":115,"tag":127,"props":2886,"children":2887},{},[2888,2890,2895],{"type":120,"value":2889},"Egress firewall uses ",{"type":115,"tag":131,"props":2891,"children":2892},{},[2893],{"type":120,"value":2894},"SNI filtering",{"type":120,"value":2896}," on TLS client-hello — outbound connections are matched at the handshake and unauthorized destinations are rejected before data transmits. For non-TLS traffic, IP\u002FCIDR rules are also supported.",{"type":115,"tag":127,"props":2898,"children":2899},{},[2900],{"type":120,"value":2901},"Policies can be updated at runtime without restarting the sandbox process, enabling multi-step workflows (e.g., open access during setup → deny-all before running untrusted code).",{"type":115,"tag":540,"props":2903,"children":2905},{"className":542,"code":2904,"language":544,"meta":545,"style":545},"\u002F\u002F Lock down before running untrusted code\nawait sandbox.updateNetworkPolicy('deny-all');\n\n\u002F\u002F Allow specific domains only (SNI filtering)\nawait sandbox.updateNetworkPolicy({\n  allow: ['api.openai.com', '*.googleapis.com'],\n});\n\n\u002F\u002F Credential brokering (inject API keys so untrusted code never sees them)\nawait sandbox.updateNetworkPolicy({\n  allow: {\n    'ai-gateway.vercel.sh': [{\n      transform: [{ headers: { 'x-api-key': process.env.SECRET_KEY! } }],\n    }],\n  },\n});\n",[2906],{"type":115,"tag":63,"props":2907,"children":2908},{"__ignoreMap":545},[2909,2917,2962,2969,2977,3004,3058,3073,3080,3088,3115,3131,3160,3252,3268,3275],{"type":115,"tag":551,"props":2910,"children":2911},{"class":553,"line":554},[2912],{"type":115,"tag":551,"props":2913,"children":2914},{"style":620},[2915],{"type":120,"value":2916},"\u002F\u002F Lock down before running untrusted code\n",{"type":115,"tag":551,"props":2918,"children":2919},{"class":553,"line":606},[2920,2924,2928,2932,2937,2941,2945,2950,2954,2958],{"type":115,"tag":551,"props":2921,"children":2922},{"style":558},[2923],{"type":120,"value":1588},{"type":115,"tag":551,"props":2925,"children":2926},{"style":570},[2927],{"type":120,"value":872},{"type":115,"tag":551,"props":2929,"children":2930},{"style":564},[2931],{"type":120,"value":656},{"type":115,"tag":551,"props":2933,"children":2934},{"style":659},[2935],{"type":120,"value":2936},"updateNetworkPolicy",{"type":115,"tag":551,"props":2938,"children":2939},{"style":570},[2940],{"type":120,"value":667},{"type":115,"tag":551,"props":2942,"children":2943},{"style":564},[2944],{"type":120,"value":598},{"type":115,"tag":551,"props":2946,"children":2947},{"style":591},[2948],{"type":120,"value":2949},"deny-all",{"type":115,"tag":551,"props":2951,"children":2952},{"style":564},[2953],{"type":120,"value":598},{"type":115,"tag":551,"props":2955,"children":2956},{"style":570},[2957],{"type":120,"value":419},{"type":115,"tag":551,"props":2959,"children":2960},{"style":564},[2961],{"type":120,"value":603},{"type":115,"tag":551,"props":2963,"children":2964},{"class":553,"line":616},[2965],{"type":115,"tag":551,"props":2966,"children":2967},{"emptyLinePlaceholder":610},[2968],{"type":120,"value":613},{"type":115,"tag":551,"props":2970,"children":2971},{"class":553,"line":42},[2972],{"type":115,"tag":551,"props":2973,"children":2974},{"style":620},[2975],{"type":120,"value":2976},"\u002F\u002F Allow specific domains only (SNI filtering)\n",{"type":115,"tag":551,"props":2978,"children":2979},{"class":553,"line":675},[2980,2984,2988,2992,2996,3000],{"type":115,"tag":551,"props":2981,"children":2982},{"style":558},[2983],{"type":120,"value":1588},{"type":115,"tag":551,"props":2985,"children":2986},{"style":570},[2987],{"type":120,"value":872},{"type":115,"tag":551,"props":2989,"children":2990},{"style":564},[2991],{"type":120,"value":656},{"type":115,"tag":551,"props":2993,"children":2994},{"style":659},[2995],{"type":120,"value":2936},{"type":115,"tag":551,"props":2997,"children":2998},{"style":570},[2999],{"type":120,"value":667},{"type":115,"tag":551,"props":3001,"children":3002},{"style":564},[3003],{"type":120,"value":672},{"type":115,"tag":551,"props":3005,"children":3006},{"class":553,"line":712},[3007,3012,3016,3020,3024,3029,3033,3037,3041,3046,3050,3054],{"type":115,"tag":551,"props":3008,"children":3009},{"style":679},[3010],{"type":120,"value":3011},"  allow",{"type":115,"tag":551,"props":3013,"children":3014},{"style":564},[3015],{"type":120,"value":687},{"type":115,"tag":551,"props":3017,"children":3018},{"style":570},[3019],{"type":120,"value":907},{"type":115,"tag":551,"props":3021,"children":3022},{"style":564},[3023],{"type":120,"value":598},{"type":115,"tag":551,"props":3025,"children":3026},{"style":591},[3027],{"type":120,"value":3028},"api.openai.com",{"type":115,"tag":551,"props":3030,"children":3031},{"style":564},[3032],{"type":120,"value":598},{"type":115,"tag":551,"props":3034,"children":3035},{"style":564},[3036],{"type":120,"value":704},{"type":115,"tag":551,"props":3038,"children":3039},{"style":564},[3040],{"type":120,"value":588},{"type":115,"tag":551,"props":3042,"children":3043},{"style":591},[3044],{"type":120,"value":3045},"*.googleapis.com",{"type":115,"tag":551,"props":3047,"children":3048},{"style":564},[3049],{"type":120,"value":598},{"type":115,"tag":551,"props":3051,"children":3052},{"style":570},[3053],{"type":120,"value":1136},{"type":115,"tag":551,"props":3055,"children":3056},{"style":564},[3057],{"type":120,"value":762},{"type":115,"tag":551,"props":3059,"children":3060},{"class":553,"line":734},[3061,3065,3069],{"type":115,"tag":551,"props":3062,"children":3063},{"style":564},[3064],{"type":120,"value":821},{"type":115,"tag":551,"props":3066,"children":3067},{"style":570},[3068],{"type":120,"value":419},{"type":115,"tag":551,"props":3070,"children":3071},{"style":564},[3072],{"type":120,"value":603},{"type":115,"tag":551,"props":3074,"children":3075},{"class":553,"line":765},[3076],{"type":115,"tag":551,"props":3077,"children":3078},{"emptyLinePlaceholder":610},[3079],{"type":120,"value":613},{"type":115,"tag":551,"props":3081,"children":3082},{"class":553,"line":806},[3083],{"type":115,"tag":551,"props":3084,"children":3085},{"style":620},[3086],{"type":120,"value":3087},"\u002F\u002F Credential brokering (inject API keys so untrusted code never sees them)\n",{"type":115,"tag":551,"props":3089,"children":3090},{"class":553,"line":815},[3091,3095,3099,3103,3107,3111],{"type":115,"tag":551,"props":3092,"children":3093},{"style":558},[3094],{"type":120,"value":1588},{"type":115,"tag":551,"props":3096,"children":3097},{"style":570},[3098],{"type":120,"value":872},{"type":115,"tag":551,"props":3100,"children":3101},{"style":564},[3102],{"type":120,"value":656},{"type":115,"tag":551,"props":3104,"children":3105},{"style":659},[3106],{"type":120,"value":2936},{"type":115,"tag":551,"props":3108,"children":3109},{"style":570},[3110],{"type":120,"value":667},{"type":115,"tag":551,"props":3112,"children":3113},{"style":564},[3114],{"type":120,"value":672},{"type":115,"tag":551,"props":3116,"children":3117},{"class":553,"line":832},[3118,3122,3126],{"type":115,"tag":551,"props":3119,"children":3120},{"style":679},[3121],{"type":120,"value":3011},{"type":115,"tag":551,"props":3123,"children":3124},{"style":564},[3125],{"type":120,"value":687},{"type":115,"tag":551,"props":3127,"children":3128},{"style":564},[3129],{"type":120,"value":3130}," {\n",{"type":115,"tag":551,"props":3132,"children":3133},{"class":553,"line":840},[3134,3139,3144,3148,3152,3156],{"type":115,"tag":551,"props":3135,"children":3136},{"style":564},[3137],{"type":120,"value":3138},"    '",{"type":115,"tag":551,"props":3140,"children":3141},{"style":679},[3142],{"type":120,"value":3143},"ai-gateway.vercel.sh",{"type":115,"tag":551,"props":3145,"children":3146},{"style":564},[3147],{"type":120,"value":598},{"type":115,"tag":551,"props":3149,"children":3150},{"style":564},[3151],{"type":120,"value":687},{"type":115,"tag":551,"props":3153,"children":3154},{"style":570},[3155],{"type":120,"value":907},{"type":115,"tag":551,"props":3157,"children":3158},{"style":564},[3159],{"type":120,"value":672},{"type":115,"tag":551,"props":3161,"children":3162},{"class":553,"line":849},[3163,3168,3172,3176,3180,3185,3189,3193,3197,3202,3206,3210,3214,3218,3222,3226,3231,3236,3240,3244,3248],{"type":115,"tag":551,"props":3164,"children":3165},{"style":679},[3166],{"type":120,"value":3167},"      transform",{"type":115,"tag":551,"props":3169,"children":3170},{"style":564},[3171],{"type":120,"value":687},{"type":115,"tag":551,"props":3173,"children":3174},{"style":570},[3175],{"type":120,"value":907},{"type":115,"tag":551,"props":3177,"children":3178},{"style":564},[3179],{"type":120,"value":1888},{"type":115,"tag":551,"props":3181,"children":3182},{"style":679},[3183],{"type":120,"value":3184}," headers",{"type":115,"tag":551,"props":3186,"children":3187},{"style":564},[3188],{"type":120,"value":687},{"type":115,"tag":551,"props":3190,"children":3191},{"style":564},[3192],{"type":120,"value":567},{"type":115,"tag":551,"props":3194,"children":3195},{"style":564},[3196],{"type":120,"value":588},{"type":115,"tag":551,"props":3198,"children":3199},{"style":679},[3200],{"type":120,"value":3201},"x-api-key",{"type":115,"tag":551,"props":3203,"children":3204},{"style":564},[3205],{"type":120,"value":598},{"type":115,"tag":551,"props":3207,"children":3208},{"style":564},[3209],{"type":120,"value":687},{"type":115,"tag":551,"props":3211,"children":3212},{"style":570},[3213],{"type":120,"value":780},{"type":115,"tag":551,"props":3215,"children":3216},{"style":564},[3217],{"type":120,"value":656},{"type":115,"tag":551,"props":3219,"children":3220},{"style":570},[3221],{"type":120,"value":789},{"type":115,"tag":551,"props":3223,"children":3224},{"style":564},[3225],{"type":120,"value":656},{"type":115,"tag":551,"props":3227,"children":3228},{"style":570},[3229],{"type":120,"value":3230},"SECRET_KEY",{"type":115,"tag":551,"props":3232,"children":3233},{"style":564},[3234],{"type":120,"value":3235},"!",{"type":115,"tag":551,"props":3237,"children":3238},{"style":564},[3239],{"type":120,"value":578},{"type":115,"tag":551,"props":3241,"children":3242},{"style":564},[3243],{"type":120,"value":578},{"type":115,"tag":551,"props":3245,"children":3246},{"style":570},[3247],{"type":120,"value":1136},{"type":115,"tag":551,"props":3249,"children":3250},{"style":564},[3251],{"type":120,"value":762},{"type":115,"tag":551,"props":3253,"children":3254},{"class":553,"line":949},[3255,3260,3264],{"type":115,"tag":551,"props":3256,"children":3257},{"style":564},[3258],{"type":120,"value":3259},"    }",{"type":115,"tag":551,"props":3261,"children":3262},{"style":570},[3263],{"type":120,"value":1136},{"type":115,"tag":551,"props":3265,"children":3266},{"style":564},[3267],{"type":120,"value":762},{"type":115,"tag":551,"props":3269,"children":3270},{"class":553,"line":999},[3271],{"type":115,"tag":551,"props":3272,"children":3273},{"style":564},[3274],{"type":120,"value":812},{"type":115,"tag":551,"props":3276,"children":3277},{"class":553,"line":1007},[3278,3282,3286],{"type":115,"tag":551,"props":3279,"children":3280},{"style":564},[3281],{"type":120,"value":821},{"type":115,"tag":551,"props":3283,"children":3284},{"style":570},[3285],{"type":120,"value":419},{"type":115,"tag":551,"props":3287,"children":3288},{"style":564},[3289],{"type":120,"value":603},{"type":115,"tag":533,"props":3291,"children":3293},{"id":3292},"public-urls-and-lifecycle",[3294],{"type":120,"value":3295},"Public URLs and Lifecycle",{"type":115,"tag":540,"props":3297,"children":3299},{"className":542,"code":3298,"language":544,"meta":545,"style":545},"\u002F\u002F Expose a port and get a public URL\nconst sandbox = await Sandbox.create({ ports: [3000] });\nconst url = sandbox.domain(3000); \u002F\u002F public URL\n\n\u002F\u002F Extend timeout\nawait sandbox.extendTimeout(300_000); \u002F\u002F +5 minutes\n\n\u002F\u002F Clean up\nawait sandbox.stop();\n\n\u002F\u002F Check status\nsandbox.status; \u002F\u002F 'pending' | 'running' | 'stopping' | 'stopped' | 'failed'\n\n\u002F\u002F Resource tracking (after stop)\nsandbox.activeCpuUsageMs;\nsandbox.networkUsage; \u002F\u002F { ingress, egress } in bytes\n",[3300],{"type":115,"tag":63,"props":3301,"children":3302},{"__ignoreMap":545},[3303,3311,3384,3434,3441,3449,3491,3498,3506,3534,3541,3549,3574,3581,3589,3609],{"type":115,"tag":551,"props":3304,"children":3305},{"class":553,"line":554},[3306],{"type":115,"tag":551,"props":3307,"children":3308},{"style":620},[3309],{"type":120,"value":3310},"\u002F\u002F Expose a port and get a public URL\n",{"type":115,"tag":551,"props":3312,"children":3313},{"class":553,"line":606},[3314,3318,3322,3326,3330,3334,3338,3342,3346,3350,3355,3359,3363,3368,3372,3376,3380],{"type":115,"tag":551,"props":3315,"children":3316},{"style":629},[3317],{"type":120,"value":632},{"type":115,"tag":551,"props":3319,"children":3320},{"style":570},[3321],{"type":120,"value":637},{"type":115,"tag":551,"props":3323,"children":3324},{"style":564},[3325],{"type":120,"value":642},{"type":115,"tag":551,"props":3327,"children":3328},{"style":558},[3329],{"type":120,"value":647},{"type":115,"tag":551,"props":3331,"children":3332},{"style":570},[3333],{"type":120,"value":573},{"type":115,"tag":551,"props":3335,"children":3336},{"style":564},[3337],{"type":120,"value":656},{"type":115,"tag":551,"props":3339,"children":3340},{"style":659},[3341],{"type":120,"value":662},{"type":115,"tag":551,"props":3343,"children":3344},{"style":570},[3345],{"type":120,"value":667},{"type":115,"tag":551,"props":3347,"children":3348},{"style":564},[3349],{"type":120,"value":1888},{"type":115,"tag":551,"props":3351,"children":3352},{"style":679},[3353],{"type":120,"value":3354}," ports",{"type":115,"tag":551,"props":3356,"children":3357},{"style":564},[3358],{"type":120,"value":687},{"type":115,"tag":551,"props":3360,"children":3361},{"style":570},[3362],{"type":120,"value":907},{"type":115,"tag":551,"props":3364,"children":3365},{"style":2283},[3366],{"type":120,"value":3367},"3000",{"type":115,"tag":551,"props":3369,"children":3370},{"style":570},[3371],{"type":120,"value":1540},{"type":115,"tag":551,"props":3373,"children":3374},{"style":564},[3375],{"type":120,"value":821},{"type":115,"tag":551,"props":3377,"children":3378},{"style":570},[3379],{"type":120,"value":419},{"type":115,"tag":551,"props":3381,"children":3382},{"style":564},[3383],{"type":120,"value":603},{"type":115,"tag":551,"props":3385,"children":3386},{"class":553,"line":616},[3387,3391,3396,3400,3404,3408,3413,3417,3421,3425,3429],{"type":115,"tag":551,"props":3388,"children":3389},{"style":629},[3390],{"type":120,"value":632},{"type":115,"tag":551,"props":3392,"children":3393},{"style":570},[3394],{"type":120,"value":3395}," url ",{"type":115,"tag":551,"props":3397,"children":3398},{"style":564},[3399],{"type":120,"value":642},{"type":115,"tag":551,"props":3401,"children":3402},{"style":570},[3403],{"type":120,"value":872},{"type":115,"tag":551,"props":3405,"children":3406},{"style":564},[3407],{"type":120,"value":656},{"type":115,"tag":551,"props":3409,"children":3410},{"style":659},[3411],{"type":120,"value":3412},"domain",{"type":115,"tag":551,"props":3414,"children":3415},{"style":570},[3416],{"type":120,"value":667},{"type":115,"tag":551,"props":3418,"children":3419},{"style":2283},[3420],{"type":120,"value":3367},{"type":115,"tag":551,"props":3422,"children":3423},{"style":570},[3424],{"type":120,"value":419},{"type":115,"tag":551,"props":3426,"children":3427},{"style":564},[3428],{"type":120,"value":991},{"type":115,"tag":551,"props":3430,"children":3431},{"style":620},[3432],{"type":120,"value":3433}," \u002F\u002F public URL\n",{"type":115,"tag":551,"props":3435,"children":3436},{"class":553,"line":42},[3437],{"type":115,"tag":551,"props":3438,"children":3439},{"emptyLinePlaceholder":610},[3440],{"type":120,"value":613},{"type":115,"tag":551,"props":3442,"children":3443},{"class":553,"line":675},[3444],{"type":115,"tag":551,"props":3445,"children":3446},{"style":620},[3447],{"type":120,"value":3448},"\u002F\u002F Extend timeout\n",{"type":115,"tag":551,"props":3450,"children":3451},{"class":553,"line":712},[3452,3456,3460,3464,3469,3473,3478,3482,3486],{"type":115,"tag":551,"props":3453,"children":3454},{"style":558},[3455],{"type":120,"value":1588},{"type":115,"tag":551,"props":3457,"children":3458},{"style":570},[3459],{"type":120,"value":872},{"type":115,"tag":551,"props":3461,"children":3462},{"style":564},[3463],{"type":120,"value":656},{"type":115,"tag":551,"props":3465,"children":3466},{"style":659},[3467],{"type":120,"value":3468},"extendTimeout",{"type":115,"tag":551,"props":3470,"children":3471},{"style":570},[3472],{"type":120,"value":667},{"type":115,"tag":551,"props":3474,"children":3475},{"style":2283},[3476],{"type":120,"value":3477},"300_000",{"type":115,"tag":551,"props":3479,"children":3480},{"style":570},[3481],{"type":120,"value":419},{"type":115,"tag":551,"props":3483,"children":3484},{"style":564},[3485],{"type":120,"value":991},{"type":115,"tag":551,"props":3487,"children":3488},{"style":620},[3489],{"type":120,"value":3490}," \u002F\u002F +5 minutes\n",{"type":115,"tag":551,"props":3492,"children":3493},{"class":553,"line":734},[3494],{"type":115,"tag":551,"props":3495,"children":3496},{"emptyLinePlaceholder":610},[3497],{"type":120,"value":613},{"type":115,"tag":551,"props":3499,"children":3500},{"class":553,"line":765},[3501],{"type":115,"tag":551,"props":3502,"children":3503},{"style":620},[3504],{"type":120,"value":3505},"\u002F\u002F Clean up\n",{"type":115,"tag":551,"props":3507,"children":3508},{"class":553,"line":806},[3509,3513,3517,3521,3526,3530],{"type":115,"tag":551,"props":3510,"children":3511},{"style":558},[3512],{"type":120,"value":1588},{"type":115,"tag":551,"props":3514,"children":3515},{"style":570},[3516],{"type":120,"value":872},{"type":115,"tag":551,"props":3518,"children":3519},{"style":564},[3520],{"type":120,"value":656},{"type":115,"tag":551,"props":3522,"children":3523},{"style":659},[3524],{"type":120,"value":3525},"stop",{"type":115,"tag":551,"props":3527,"children":3528},{"style":570},[3529],{"type":120,"value":986},{"type":115,"tag":551,"props":3531,"children":3532},{"style":564},[3533],{"type":120,"value":603},{"type":115,"tag":551,"props":3535,"children":3536},{"class":553,"line":815},[3537],{"type":115,"tag":551,"props":3538,"children":3539},{"emptyLinePlaceholder":610},[3540],{"type":120,"value":613},{"type":115,"tag":551,"props":3542,"children":3543},{"class":553,"line":832},[3544],{"type":115,"tag":551,"props":3545,"children":3546},{"style":620},[3547],{"type":120,"value":3548},"\u002F\u002F Check status\n",{"type":115,"tag":551,"props":3550,"children":3551},{"class":553,"line":840},[3552,3556,3560,3565,3569],{"type":115,"tag":551,"props":3553,"children":3554},{"style":570},[3555],{"type":120,"value":56},{"type":115,"tag":551,"props":3557,"children":3558},{"style":564},[3559],{"type":120,"value":656},{"type":115,"tag":551,"props":3561,"children":3562},{"style":570},[3563],{"type":120,"value":3564},"status",{"type":115,"tag":551,"props":3566,"children":3567},{"style":564},[3568],{"type":120,"value":991},{"type":115,"tag":551,"props":3570,"children":3571},{"style":620},[3572],{"type":120,"value":3573}," \u002F\u002F 'pending' | 'running' | 'stopping' | 'stopped' | 'failed'\n",{"type":115,"tag":551,"props":3575,"children":3576},{"class":553,"line":849},[3577],{"type":115,"tag":551,"props":3578,"children":3579},{"emptyLinePlaceholder":610},[3580],{"type":120,"value":613},{"type":115,"tag":551,"props":3582,"children":3583},{"class":553,"line":949},[3584],{"type":115,"tag":551,"props":3585,"children":3586},{"style":620},[3587],{"type":120,"value":3588},"\u002F\u002F Resource tracking (after stop)\n",{"type":115,"tag":551,"props":3590,"children":3591},{"class":553,"line":999},[3592,3596,3600,3605],{"type":115,"tag":551,"props":3593,"children":3594},{"style":570},[3595],{"type":120,"value":56},{"type":115,"tag":551,"props":3597,"children":3598},{"style":564},[3599],{"type":120,"value":656},{"type":115,"tag":551,"props":3601,"children":3602},{"style":570},[3603],{"type":120,"value":3604},"activeCpuUsageMs",{"type":115,"tag":551,"props":3606,"children":3607},{"style":564},[3608],{"type":120,"value":603},{"type":115,"tag":551,"props":3610,"children":3611},{"class":553,"line":1007},[3612,3616,3620,3625,3629],{"type":115,"tag":551,"props":3613,"children":3614},{"style":570},[3615],{"type":120,"value":56},{"type":115,"tag":551,"props":3617,"children":3618},{"style":564},[3619],{"type":120,"value":656},{"type":115,"tag":551,"props":3621,"children":3622},{"style":570},[3623],{"type":120,"value":3624},"networkUsage",{"type":115,"tag":551,"props":3626,"children":3627},{"style":564},[3628],{"type":120,"value":991},{"type":115,"tag":551,"props":3630,"children":3631},{"style":620},[3632],{"type":120,"value":3633}," \u002F\u002F { ingress, egress } in bytes\n",{"type":115,"tag":533,"props":3635,"children":3637},{"id":3636},"list-and-rehydrate",[3638],{"type":120,"value":3639},"List and Rehydrate",{"type":115,"tag":540,"props":3641,"children":3643},{"className":542,"code":3642,"language":544,"meta":545,"style":545},"\u002F\u002F List existing sandboxes\nconst { sandboxes } = await Sandbox.list({ limit: 10 });\n\n\u002F\u002F Reconnect to a running sandbox\nconst sandbox = await Sandbox.get({ sandboxId: 'sbx_abc123' });\n",[3644],{"type":115,"tag":63,"props":3645,"children":3646},{"__ignoreMap":545},[3647,3655,3729,3736,3744],{"type":115,"tag":551,"props":3648,"children":3649},{"class":553,"line":554},[3650],{"type":115,"tag":551,"props":3651,"children":3652},{"style":620},[3653],{"type":120,"value":3654},"\u002F\u002F List existing sandboxes\n",{"type":115,"tag":551,"props":3656,"children":3657},{"class":553,"line":606},[3658,3662,3666,3671,3675,3679,3683,3687,3691,3695,3699,3703,3708,3712,3717,3721,3725],{"type":115,"tag":551,"props":3659,"children":3660},{"style":629},[3661],{"type":120,"value":632},{"type":115,"tag":551,"props":3663,"children":3664},{"style":564},[3665],{"type":120,"value":567},{"type":115,"tag":551,"props":3667,"children":3668},{"style":570},[3669],{"type":120,"value":3670}," sandboxes ",{"type":115,"tag":551,"props":3672,"children":3673},{"style":564},[3674],{"type":120,"value":821},{"type":115,"tag":551,"props":3676,"children":3677},{"style":564},[3678],{"type":120,"value":2749},{"type":115,"tag":551,"props":3680,"children":3681},{"style":558},[3682],{"type":120,"value":647},{"type":115,"tag":551,"props":3684,"children":3685},{"style":570},[3686],{"type":120,"value":573},{"type":115,"tag":551,"props":3688,"children":3689},{"style":564},[3690],{"type":120,"value":656},{"type":115,"tag":551,"props":3692,"children":3693},{"style":659},[3694],{"type":120,"value":2767},{"type":115,"tag":551,"props":3696,"children":3697},{"style":570},[3698],{"type":120,"value":667},{"type":115,"tag":551,"props":3700,"children":3701},{"style":564},[3702],{"type":120,"value":1888},{"type":115,"tag":551,"props":3704,"children":3705},{"style":679},[3706],{"type":120,"value":3707}," limit",{"type":115,"tag":551,"props":3709,"children":3710},{"style":564},[3711],{"type":120,"value":687},{"type":115,"tag":551,"props":3713,"children":3714},{"style":2283},[3715],{"type":120,"value":3716}," 10",{"type":115,"tag":551,"props":3718,"children":3719},{"style":564},[3720],{"type":120,"value":578},{"type":115,"tag":551,"props":3722,"children":3723},{"style":570},[3724],{"type":120,"value":419},{"type":115,"tag":551,"props":3726,"children":3727},{"style":564},[3728],{"type":120,"value":603},{"type":115,"tag":551,"props":3730,"children":3731},{"class":553,"line":616},[3732],{"type":115,"tag":551,"props":3733,"children":3734},{"emptyLinePlaceholder":610},[3735],{"type":120,"value":613},{"type":115,"tag":551,"props":3737,"children":3738},{"class":553,"line":42},[3739],{"type":115,"tag":551,"props":3740,"children":3741},{"style":620},[3742],{"type":120,"value":3743},"\u002F\u002F Reconnect to a running sandbox\n",{"type":115,"tag":551,"props":3745,"children":3746},{"class":553,"line":675},[3747,3751,3755,3759,3763,3767,3771,3775,3779,3783,3788,3792,3796,3801,3805,3809,3813],{"type":115,"tag":551,"props":3748,"children":3749},{"style":629},[3750],{"type":120,"value":632},{"type":115,"tag":551,"props":3752,"children":3753},{"style":570},[3754],{"type":120,"value":637},{"type":115,"tag":551,"props":3756,"children":3757},{"style":564},[3758],{"type":120,"value":642},{"type":115,"tag":551,"props":3760,"children":3761},{"style":558},[3762],{"type":120,"value":647},{"type":115,"tag":551,"props":3764,"children":3765},{"style":570},[3766],{"type":120,"value":573},{"type":115,"tag":551,"props":3768,"children":3769},{"style":564},[3770],{"type":120,"value":656},{"type":115,"tag":551,"props":3772,"children":3773},{"style":659},[3774],{"type":120,"value":2808},{"type":115,"tag":551,"props":3776,"children":3777},{"style":570},[3778],{"type":120,"value":667},{"type":115,"tag":551,"props":3780,"children":3781},{"style":564},[3782],{"type":120,"value":1888},{"type":115,"tag":551,"props":3784,"children":3785},{"style":679},[3786],{"type":120,"value":3787}," sandboxId",{"type":115,"tag":551,"props":3789,"children":3790},{"style":564},[3791],{"type":120,"value":687},{"type":115,"tag":551,"props":3793,"children":3794},{"style":564},[3795],{"type":120,"value":588},{"type":115,"tag":551,"props":3797,"children":3798},{"style":591},[3799],{"type":120,"value":3800},"sbx_abc123",{"type":115,"tag":551,"props":3802,"children":3803},{"style":564},[3804],{"type":120,"value":598},{"type":115,"tag":551,"props":3806,"children":3807},{"style":564},[3808],{"type":120,"value":578},{"type":115,"tag":551,"props":3810,"children":3811},{"style":570},[3812],{"type":120,"value":419},{"type":115,"tag":551,"props":3814,"children":3815},{"style":564},[3816],{"type":120,"value":603},{"type":115,"tag":209,"props":3818,"children":3820},{"id":3819},"timeout-limits",[3821],{"type":120,"value":3822},"Timeout Limits",{"type":115,"tag":228,"props":3824,"children":3825},{},[3826,3842],{"type":115,"tag":232,"props":3827,"children":3828},{},[3829],{"type":115,"tag":236,"props":3830,"children":3831},{},[3832,3837],{"type":115,"tag":240,"props":3833,"children":3834},{},[3835],{"type":120,"value":3836},"Plan",{"type":115,"tag":240,"props":3838,"children":3839},{},[3840],{"type":120,"value":3841},"Max Timeout",{"type":115,"tag":256,"props":3843,"children":3844},{},[3845,3858,3871],{"type":115,"tag":236,"props":3846,"children":3847},{},[3848,3853],{"type":115,"tag":263,"props":3849,"children":3850},{},[3851],{"type":120,"value":3852},"Default",{"type":115,"tag":263,"props":3854,"children":3855},{},[3856],{"type":120,"value":3857},"5 minutes",{"type":115,"tag":236,"props":3859,"children":3860},{},[3861,3866],{"type":115,"tag":263,"props":3862,"children":3863},{},[3864],{"type":120,"value":3865},"Hobby",{"type":115,"tag":263,"props":3867,"children":3868},{},[3869],{"type":120,"value":3870},"45 minutes",{"type":115,"tag":236,"props":3872,"children":3873},{},[3874,3879],{"type":115,"tag":263,"props":3875,"children":3876},{},[3877],{"type":120,"value":3878},"Pro\u002FEnterprise",{"type":115,"tag":263,"props":3880,"children":3881},{},[3882],{"type":120,"value":3883},"5 hours",{"type":115,"tag":209,"props":3885,"children":3887},{"id":3886},"agent-patterns",[3888],{"type":120,"value":3889},"Agent Patterns",{"type":115,"tag":3891,"props":3892,"children":3893},"ol",{},[3894,3904,3914,3931,3941,3959],{"type":115,"tag":381,"props":3895,"children":3896},{},[3897,3902],{"type":115,"tag":131,"props":3898,"children":3899},{},[3900],{"type":120,"value":3901},"Safe AI code execution",{"type":120,"value":3903},": Run AI-generated code without production risk",{"type":115,"tag":381,"props":3905,"children":3906},{},[3907,3912],{"type":115,"tag":131,"props":3908,"children":3909},{},[3910],{"type":120,"value":3911},"Snapshot-based fast restart",{"type":120,"value":3913},": Install deps once → snapshot → create from snapshot (skip setup)",{"type":115,"tag":381,"props":3915,"children":3916},{},[3917,3922,3924,3929],{"type":115,"tag":131,"props":3918,"children":3919},{},[3920],{"type":120,"value":3921},"Network isolation",{"type":120,"value":3923},": Allow all during setup → ",{"type":115,"tag":63,"props":3925,"children":3927},{"className":3926},[],[3928],{"type":120,"value":2949},{"type":120,"value":3930}," before untrusted code",{"type":115,"tag":381,"props":3932,"children":3933},{},[3934,3939],{"type":115,"tag":131,"props":3935,"children":3936},{},[3937],{"type":120,"value":3938},"Credential brokering",{"type":120,"value":3940},": Inject API keys via network policy transforms",{"type":115,"tag":381,"props":3942,"children":3943},{},[3944,3949,3951,3957],{"type":115,"tag":131,"props":3945,"children":3946},{},[3947],{"type":120,"value":3948},"Live preview",{"type":120,"value":3950},": Expose ports via ",{"type":115,"tag":63,"props":3952,"children":3954},{"className":3953},[],[3955],{"type":120,"value":3956},"sandbox.domain(port)",{"type":120,"value":3958}," for generated apps",{"type":115,"tag":381,"props":3960,"children":3961},{},[3962,3967,3968,3974,3976,3982],{"type":115,"tag":131,"props":3963,"children":3964},{},[3965],{"type":120,"value":3966},"File I\u002FO workflow",{"type":120,"value":429},{"type":115,"tag":63,"props":3969,"children":3971},{"className":3970},[],[3972],{"type":120,"value":3973},"writeFiles()",{"type":120,"value":3975}," → execute → ",{"type":115,"tag":63,"props":3977,"children":3979},{"className":3978},[],[3980],{"type":120,"value":3981},"readFileToBuffer()",{"type":120,"value":3983}," results",{"type":115,"tag":209,"props":3985,"children":3987},{"id":3986},"when-to-use",[3988],{"type":120,"value":3989},"When to Use",{"type":115,"tag":377,"props":3991,"children":3992},{},[3993,3998,4003,4008],{"type":115,"tag":381,"props":3994,"children":3995},{},[3996],{"type":120,"value":3997},"AI agents need to execute generated code safely",{"type":115,"tag":381,"props":3999,"children":4000},{},[4001],{"type":120,"value":4002},"User-submitted code execution (playgrounds, tutorials)",{"type":115,"tag":381,"props":4004,"children":4005},{},[4006],{"type":120,"value":4007},"Code review validation (used by Vercel Agent)",{"type":115,"tag":381,"props":4009,"children":4010},{},[4011],{"type":120,"value":4012},"Ephemeral development environments",{"type":115,"tag":209,"props":4014,"children":4016},{"id":4015},"when-not-to-use",[4017],{"type":120,"value":4018},"When NOT to Use",{"type":115,"tag":377,"props":4020,"children":4021},{},[4022,4027,4032],{"type":115,"tag":381,"props":4023,"children":4024},{},[4025],{"type":120,"value":4026},"Production workloads → use Vercel Functions",{"type":115,"tag":381,"props":4028,"children":4029},{},[4030],{"type":120,"value":4031},"Long-running services → use a dedicated server",{"type":115,"tag":381,"props":4033,"children":4034},{},[4035],{"type":120,"value":4036},"Simple function execution → use Serverless Functions",{"type":115,"tag":209,"props":4038,"children":4040},{"id":4039},"references",[4041],{"type":120,"value":4042},"References",{"type":115,"tag":377,"props":4044,"children":4045},{},[4046,4056,4066],{"type":115,"tag":381,"props":4047,"children":4048},{},[4049,4051],{"type":120,"value":4050},"📖 docs: ",{"type":115,"tag":146,"props":4052,"children":4054},{"href":148,"rel":4053},[150],[4055],{"type":120,"value":148},{"type":115,"tag":381,"props":4057,"children":4058},{},[4059,4061],{"type":120,"value":4060},"📖 SDK reference: ",{"type":115,"tag":146,"props":4062,"children":4064},{"href":157,"rel":4063},[150],[4065],{"type":120,"value":157},{"type":115,"tag":381,"props":4067,"children":4068},{},[4069,4071],{"type":120,"value":4070},"📖 GitHub: ",{"type":115,"tag":146,"props":4072,"children":4074},{"href":197,"rel":4073},[150],[4075],{"type":120,"value":197},{"type":115,"tag":4077,"props":4078,"children":4079},"style",{},[4080],{"type":120,"value":4081},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":4083,"total":4288},[4084,4105,4128,4145,4161,4180,4199,4215,4231,4245,4257,4272],{"slug":4085,"name":4085,"fn":4086,"description":4087,"org":4088,"tags":4089,"stars":4102,"repoUrl":4103,"updatedAt":4104},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4090,4093,4096,4099],{"name":4091,"slug":4092,"type":15},"Documents","documents",{"name":4094,"slug":4095,"type":15},"Healthcare","healthcare",{"name":4097,"slug":4098,"type":15},"Insurance","insurance",{"name":4100,"slug":4101,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-04-16T05:11:39.180399",{"slug":4106,"name":4106,"fn":4107,"description":4108,"org":4109,"tags":4110,"stars":4125,"repoUrl":4126,"updatedAt":4127},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4111,4114,4116,4119,4122],{"name":4112,"slug":4113,"type":15},".NET","dotnet",{"name":4115,"slug":4106,"type":15},"ASP.NET Core",{"name":4117,"slug":4118,"type":15},"Blazor","blazor",{"name":4120,"slug":4121,"type":15},"C#","csharp",{"name":4123,"slug":4124,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":4129,"name":4129,"fn":4130,"description":4131,"org":4132,"tags":4133,"stars":4125,"repoUrl":4126,"updatedAt":4144},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4134,4137,4140,4143],{"name":4135,"slug":4136,"type":15},"Apps SDK","apps-sdk",{"name":4138,"slug":4139,"type":15},"ChatGPT","chatgpt",{"name":4141,"slug":4142,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":4146,"name":4146,"fn":4147,"description":4148,"org":4149,"tags":4150,"stars":4125,"repoUrl":4126,"updatedAt":4160},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4151,4154,4157],{"name":4152,"slug":4153,"type":15},"API Development","api-development",{"name":4155,"slug":4156,"type":15},"CLI","cli",{"name":4158,"slug":4159,"type":15},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":4162,"name":4162,"fn":4163,"description":4164,"org":4165,"tags":4166,"stars":4125,"repoUrl":4126,"updatedAt":4179},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4167,4170,4173,4176],{"name":4168,"slug":4169,"type":15},"Cloudflare","cloudflare",{"name":4171,"slug":4172,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":4174,"slug":4175,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":4177,"slug":4178,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":4181,"name":4181,"fn":4182,"description":4183,"org":4184,"tags":4185,"stars":4125,"repoUrl":4126,"updatedAt":4198},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4186,4189,4192,4195],{"name":4187,"slug":4188,"type":15},"Productivity","productivity",{"name":4190,"slug":4191,"type":15},"Project Management","project-management",{"name":4193,"slug":4194,"type":15},"Strategy","strategy",{"name":4196,"slug":4197,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":4200,"name":4200,"fn":4201,"description":4202,"org":4203,"tags":4204,"stars":4125,"repoUrl":4126,"updatedAt":4214},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4205,4208,4210,4213],{"name":4206,"slug":4207,"type":15},"Design","design",{"name":4209,"slug":4200,"type":15},"Figma",{"name":4211,"slug":4212,"type":15},"Frontend","frontend",{"name":4141,"slug":4142,"type":15},"2026-04-12T05:06:47.939943",{"slug":4216,"name":4216,"fn":4217,"description":4218,"org":4219,"tags":4220,"stars":4125,"repoUrl":4126,"updatedAt":4230},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4221,4222,4225,4226,4227],{"name":4206,"slug":4207,"type":15},{"name":4223,"slug":4224,"type":15},"Design System","design-system",{"name":4209,"slug":4200,"type":15},{"name":4211,"slug":4212,"type":15},{"name":4228,"slug":4229,"type":15},"UI Components","ui-components","2026-05-10T05:59:52.971881",{"slug":4232,"name":4232,"fn":4233,"description":4234,"org":4235,"tags":4236,"stars":4125,"repoUrl":4126,"updatedAt":4244},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4237,4238,4239,4242,4243],{"name":4206,"slug":4207,"type":15},{"name":4223,"slug":4224,"type":15},{"name":4240,"slug":4241,"type":15},"Documentation","documentation",{"name":4209,"slug":4200,"type":15},{"name":4211,"slug":4212,"type":15},"2026-05-16T06:07:47.821474",{"slug":4246,"name":4246,"fn":4247,"description":4248,"org":4249,"tags":4250,"stars":4125,"repoUrl":4126,"updatedAt":4256},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4251,4252,4253,4254,4255],{"name":4206,"slug":4207,"type":15},{"name":4209,"slug":4200,"type":15},{"name":4211,"slug":4212,"type":15},{"name":4228,"slug":4229,"type":15},{"name":4123,"slug":4124,"type":15},"2026-05-16T06:07:40.583615",{"slug":4258,"name":4258,"fn":4259,"description":4260,"org":4261,"tags":4262,"stars":4125,"repoUrl":4126,"updatedAt":4271},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4263,4266,4267,4270],{"name":4264,"slug":4265,"type":15},"Animation","animation",{"name":4158,"slug":4159,"type":15},{"name":4268,"slug":4269,"type":15},"Creative","creative",{"name":4206,"slug":4207,"type":15},"2026-05-02T05:31:48.48485",{"slug":4273,"name":4273,"fn":4274,"description":4275,"org":4276,"tags":4277,"stars":4125,"repoUrl":4126,"updatedAt":4287},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4278,4279,4280,4283,4286],{"name":4268,"slug":4269,"type":15},{"name":4206,"slug":4207,"type":15},{"name":4281,"slug":4282,"type":15},"Image Generation","image-generation",{"name":4284,"slug":4285,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",675,{"items":4290,"total":4398},[4291,4308,4322,4334,4352,4368,4386],{"slug":4292,"name":4292,"fn":4293,"description":4294,"org":4295,"tags":4296,"stars":28,"repoUrl":29,"updatedAt":4307},"accessibility-and-inclusive-visualization","make data visualizations accessible","Make data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4297,4300,4303,4306],{"name":4298,"slug":4299,"type":15},"Accessibility","accessibility",{"name":4301,"slug":4302,"type":15},"Charts","charts",{"name":4304,"slug":4305,"type":15},"Data Visualization","data-visualization",{"name":4206,"slug":4207,"type":15},"2026-06-30T19:00:57.102",{"slug":4309,"name":4309,"fn":4310,"description":4311,"org":4312,"tags":4313,"stars":28,"repoUrl":29,"updatedAt":4321},"agent-browser","automate browser interactions for agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4314,4315,4318],{"name":23,"slug":24,"type":15},{"name":4316,"slug":4317,"type":15},"Browser Automation","browser-automation",{"name":4319,"slug":4320,"type":15},"Testing","testing","2026-04-06T18:41:03.44016",{"slug":4323,"name":4323,"fn":4324,"description":4325,"org":4326,"tags":4327,"stars":28,"repoUrl":29,"updatedAt":4333},"agent-browser-verify","verify dev server output with automated browser","Automated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass\u002Ffail before continuing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4328,4329,4332],{"name":4316,"slug":4317,"type":15},{"name":4330,"slug":4331,"type":15},"Local Development","local-development",{"name":4319,"slug":4320,"type":15},"2026-04-06T18:41:17.526867",{"slug":4335,"name":4335,"fn":4336,"description":4337,"org":4338,"tags":4339,"stars":28,"repoUrl":29,"updatedAt":4351},"agents-sdk","build AI agents on Cloudflare Workers","Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4340,4341,4342,4345,4348],{"name":23,"slug":24,"type":15},{"name":4174,"slug":4175,"type":15},{"name":4343,"slug":4344,"type":15},"SDK","sdk",{"name":4346,"slug":4347,"type":15},"Serverless","serverless",{"name":4349,"slug":4350,"type":15},"WebSockets","websockets","2026-04-06T18:39:51.717063",{"slug":4353,"name":4353,"fn":4354,"description":4355,"org":4356,"tags":4357,"stars":28,"repoUrl":29,"updatedAt":4367},"ai-elements","build chat UIs with AI Elements","AI Elements component library guidance — pre-built React components for AI interfaces built on shadcn\u002Fui. Use when building chat UIs, message displays, tool call rendering, streaming responses, reasoning panels, or any AI-native interface with the AI SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4358,4359,4362,4365,4366],{"name":4211,"slug":4212,"type":15},{"name":4360,"slug":4361,"type":15},"React","react",{"name":4363,"slug":4364,"type":15},"shadcn\u002Fui","shadcn-ui",{"name":4228,"slug":4229,"type":15},{"name":17,"slug":18,"type":15},"2026-04-06T18:40:59.619419",{"slug":4369,"name":4369,"fn":4370,"description":4371,"org":4372,"tags":4373,"stars":28,"repoUrl":29,"updatedAt":4385},"ai-gateway","configure Vercel AI Gateway","Vercel AI Gateway expert guidance. Use when configuring model routing, provider failover, cost tracking, or managing multiple AI providers through a unified API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4374,4375,4378,4381,4384],{"name":26,"slug":27,"type":15},{"name":4376,"slug":4377,"type":15},"Cost Optimization","cost-optimization",{"name":4379,"slug":4380,"type":15},"LLM","llm",{"name":4382,"slug":4383,"type":15},"Performance","performance",{"name":17,"slug":18,"type":15},"2026-04-06T18:40:44.377464",{"slug":4387,"name":4387,"fn":4388,"description":4389,"org":4390,"tags":4391,"stars":28,"repoUrl":29,"updatedAt":4397},"ai-generation-persistence","implement persistence patterns for AI generations","AI generation persistence patterns — unique IDs, addressable URLs, database storage, and cost tracking for every LLM generation",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4392,4393,4396],{"name":4376,"slug":4377,"type":15},{"name":4394,"slug":4395,"type":15},"Database","database",{"name":4379,"slug":4380,"type":15},"2026-04-06T18:41:08.513425",600]