@computesdk/codesandbox
CodeSandbox provider for ComputeSDK - Execute code in secure, isolated CodeSandbox environments with full filesystem and development environment support.
Installation
npm install @computesdk/codesandbox
Setup
export CSB_API_KEY=your_api_key_here
Quick Start
import { codesandbox } from '@computesdk/codesandbox';
const compute = codesandbox({
apiKey: process.env.CSB_API_KEY,
templateId: 'universal',
timeout: 600000
});
const sandbox = await compute.sandbox.create();
const result = await sandbox.runCommand('node -e "console.log(\"Hello from CodeSandbox!\")"');
console.log(result.stdout);
await sandbox.destroy();
Configuration
Environment Variables
export CSB_API_KEY=your_api_key_here
Configuration Options
interface CodesandboxConfig {
apiKey?: string;
templateId?: string;
runtime?: string;
timeout?: number;
}
Features
- ✅ Command Execution - Run shell commands in sandbox
- ✅ Filesystem Operations - Full file system access via CodeSandbox API
- ✅ Template Support - Create sandboxes from custom templates
- ✅ Development Environment - Full development setup with package managers
- ✅ Persistence - Files persist across hibernation/resume cycles
- ✅ Snapshot/Resume - Fast sandbox restoration from snapshots
API Reference
Command Execution
const result = await sandbox.runCommand(`node - <<'JS'
const fs = require('fs');
const data = { timestamp: Date.now() };
console.log('Processing data:', JSON.stringify(data));
JS`);
const result = await sandbox.runCommand(`python - <<'PY'
import datetime
import json
data = {'timestamp': datetime.datetime.now().isoformat()}
print('Processing data:', json.dumps(data))
PY`);
const result = await sandbox.runCommand('ls -la');
const result = await sandbox.runCommand('npm install lodash');
const result = await sandbox.runCommand('pip install requests');
const result = await sandbox.runCommand('npm run dev');
Filesystem Operations
await sandbox.filesystem.writeFile('/project/workspace/app.js', `
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.json({ message: 'Hello from CodeSandbox!' });
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
`);
const content = await sandbox.filesystem.readFile('/project/workspace/package.json');
await sandbox.filesystem.mkdir('/project/workspace/src');
const files = await sandbox.filesystem.readdir('/project/workspace');
const exists = await sandbox.filesystem.exists('/project/workspace/app.js');
await sandbox.filesystem.remove('/project/workspace/temp.txt');
Sandbox Management
const info = await sandbox.getInfo();
console.log(info.id, info.provider, info.status);
const existing = await compute.sandbox.getById('sandbox-id');
await compute.sandbox.destroy('sandbox-id');
Best Practices
- Resource Management: Use hibernation instead of destroying sandboxes to preserve state
- Error Handling: Use try-catch blocks for robust error handling
- Timeouts: Set appropriate timeouts for long-running tasks
- File Organization: Organize files in
/project/workspace/ directory
- Template Usage: Use appropriate templates for your project type
- API Key Security: Never commit API keys to version control
- Snapshot Management: Leverage CodeSandbox's snapshot/resume capabilities
Support
License
MIT