๐งช SANDBOX SYSTEM โ
Overview โ
Sandboxes are ephemeral containers that run user's generated apps in isolated environments.
Technology: Remote sandbox service (separate infrastructure) Communication: HTTP API with bearer token auth Lifecycle: Created on-demand, destroyed after inactivity
Sandbox Architecture โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Agent (Durable Object) โ
โ - Generates code โ
โ - Manages state โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ HTTP API calls
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ RemoteSandboxServiceClient โ
โ - createInstance() โ
โ - writeFiles() โ
โ - executeCommands() โ
โ - getStaticAnalysis() โ
โ - getRuntimeErrors() โ
โ - getLogs() โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ HTTPS (authenticated)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Sandbox Service API โ
โ (External infrastructure) โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ Manages
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Container Instance (per session) โ
โ - Node.js environment โ
โ - File system (template + generated files) โ
โ - Dev server (Vite/Next/etc) โ
โ - Error monitoring โ
โ - Log collection โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโSandbox Operations โ
1. Instance Creation โ
Method: createInstance(templateName, projectName, webhookUrl?, envVars?)
Flow:
- Agent calls with template (react-vite, nextjs, etc.)
- Sandbox service spins up container
- Clones template from git
- Installs base dependencies
- Returns instanceId + preview URL
Response: \{ instanceId, url, status: 'ready' \}
2. File Synchronization โ
Method: writeFiles(instanceId, files, commitMessage?)
Flow:
- Agent sends array of files:
[\{ path, content, encoding \}] - Sandbox writes to container filesystem
- Triggers hot reload if dev server running
- Optionally commits to git with message
Used for: Initial deployment, incremental updates, fixes
3. Command Execution โ
Method: executeCommands(instanceId, commands, timeout?)
Flow:
- Agent sends shell commands (npm install, npm run build, etc.)
- Sandbox executes in container
- Returns stdout, stderr, exit code
- Timeout after 60s default
Security: Commands validated/filtered before execution to prevent dangerous operations
4. Static Analysis โ
Method: getStaticAnalysis(instanceId)
Flow:
- Sandbox runs TypeScript compiler (tsc --noEmit)
- Collects all errors with file/line/column
- Returns structured error list
Used by: PostPhaseCodeFixer, deep debugger
5. Runtime Error Monitoring โ
Method: getRuntimeErrors(instanceId)
Flow:
- Sandbox monitors browser console errors
- Collects stack traces, error messages
- Deduplicates and categorizes
- Returns recent errors
Triggers: Websocket webhook to agent when errors occur
6. Log Retrieval โ
Method: getLogs(instanceId, lines?, filter?)
Flow:
- Returns recent console output from container
- Includes dev server logs, build output, console.log statements
- Filtered by pattern if provided
Note: Logs only appear when user interacts with app
7. Instance Shutdown โ
Method: shutdownInstance(instanceId)
Flow:
- Stops dev server
- Destroys container
- Frees resources
Auto-triggered: After 30 min inactivity or explicit user close
Session Management โ
Each agent has a sessionId that maps to a sandbox instance:
- Stored in:
CodeGenState.sessionId - Purpose: Ensures deployment goes to correct container
- Reset on: Timeout errors, critical failures
- Cached client: DeploymentManager caches sandbox client per session
Health Checks:
- Periodic ping to sandbox every 30s
- If unhealthy, resets sessionId
- Forces redeployment on next attempt