SANDBOX DEBUGGING

A sandbox configuration for cloudflare workflows.

Sandbox configurationcloudflareMIT1 source files

Before you use this component

This is a third-party source bundle, not an installation into your account. UI Discovery has checked the available redistribution license evidence; runtime behavior has not been tested. Review all files, use a disposable project first, and do not enable scripts or hooks until you understand their permissions.

Some integrations require separately installed software, API keys or paid services. Credentials and subscriptions are not included. These are Claude Code resources; other clients may require adaptation.

Extract the ZIP into a temporary folder, inspect its entry file and supporting resources, then follow the original instructions. Do not overwrite an existing project configuration blindly. Keep the bundled license and attribution notices.

Source publisher
Claude Code Templates
Creator supplied by source
Not listed in source
Pinned source version
a344359459263d73d8948651c789244093c02e4e
License evidence
LICENSE

Source preview

cli-tool/components/sandbox/cloudflare/SANDBOX_DEBUGGING.md

# Cloudflare Sandbox Debugging Guide

## 🔍 Available Monitoring Tools

### 1. Launcher with Enhanced Logging
**File**: `launcher.ts`
- Detailed logging of each execution step
- Worker availability checks
- Code generation monitoring
- Fallback to direct execution if worker unavailable
- Colored terminal output for better readability

### 2. Real-time Monitor
**File**: `monitor.ts`
- Real-time performance metrics tracking
- Worker health monitoring
- Code generation time analysis
- Sandbox execution monitoring
- Memory usage tracking
- Comprehensive error reporting

### 3. Wrangler CLI Tools
**Built-in Cloudflare debugging tools**:
- `npx wrangler tail` - Real-time log streaming
- `npx wrangler containers list` - Container status
- `npx wrangler deployments list` - Deployment history
- `npx wrangler dev` - Local development server

## 🚨 Common Troubleshooting

### Problem: "Container not ready"
**Symptoms**:
```
Error: Container not ready. Please wait 2-3 minutes after deployment.
```

**Solutions**:
1. **Wait for provisioning**:
   ```bash
   # Check container status
   npx wrangler containers list

   # Expected output after provisioning:
   # ✓ Container ready for sandbox execution
   ```

2. **Verify deployment**:
   ```bash
   npx wrangler deployments list
   # Check deployment status and timestamp
   ```

3. **Check worker logs**:
   ```bash
   npx wrangler tail
   # Look for initialization errors
   ```

### Problem: "Worker not responding"
**Symptoms**:
```
❌ Worker health check failed: fetch failed
```

**Debugging Steps**:
1. **Verify worker is deployed**:
   ```bash
   npx wrangler deploy
   # Should return worker URL
   ```

2. **Test worker endpoint**:
   ```bash
   curl https://your-worker.your-subdomain.workers.dev
   # Should return usage instructions
   ```

3. **Check local development**:
   ```bash
   # For local testing
   npm run dev

   # Test local endpoint
   curl http://localhost:8787
   ```

### Problem: "Anthropic API key not set"
**Symptoms**:
```
Error: ANTHROPIC_API_KEY is required
```

**Solutions**:
1. **Set as Wrangler secret (Production)**:
   ```bash
   npx wrangler secret put ANTHROPIC_API_KEY
   # Paste your key when prompted
   ```

2. **Set in .dev.vars (Local Development)**:
   ```bash
   # Create .dev.vars file:
   echo "ANTHROPIC_API_KEY=sk-ant-your-key-here" > .dev.vars
   ```

3. **Verify secret is set**:
   ```bash
   npx wrangler secret list
   # Should show ANTHROPIC_API_KEY
   ```

### Problem: "Sandbox execution timeout"
**Symptoms**:
```
Error: Sandbox execution exceeded 30 second timeout
```

**Solutions**:
1. **Use Durable Objects for longer operations**:
   ```typescript
   // In wrangler.toml, ensure Durable Objects are configured
   [[durable_objects.bindings]]
   name = "Sandbox"
   class_name = "Sandbox"
   ```

2. **Optimize code generation**:
   ```typescript
   // Request more concise code
   const prompt = `Generate SIMPLE Python code...`;
   ```

3. **Break into smaller tasks**:
   ```bash
   # Instead of complex operations, break into steps
   npx claude-code-templates --sandbox cloudflare \
     --prompt "Step 1: Create data structure"
   ```

### Problem: "Docker not running" (Local Development)
**Symptoms**:
```
Error: Docker daemon is not running
```

**Solutions**:
1. **Start Docker Desktop**:
   - macOS: Open Docker Desktop application
   - Linux: `sudo systemctl start docker`
   - Windows: Start Docker Desktop

2. **Verify Docker is running**:
   ```bash
   docker ps
   # Should list running containers
   ```

3. **Alternative: Deploy directly to Cloudflare**:
   ```bash
   # Skip local testing, deploy directly
   npx wrangler deploy
   ```

## 📊 Using the Monitor for Debugging

### Basic Monitoring Command:
```bash
# Monitor a simple operation
node monitor.ts "Calculate factorial of 5" your_api_key

# Monitor with custom worker URL
node monitor.ts "Fibonacci 10" your_api_key https://your-worker.workers.dev
```

### Monitor Output Example:
```
[14:32:15] ℹ 🚀 Starting enhanced Cloudflare sandbox monitoring
============================================================
🖥️  SYSTEM INFORMATION
============================================================

Node.js Version: v20.11.0
Platform: darwin
Architecture: arm64
Memory Usage: 45MB / 128MB

============================================================

[14:32:16] ℹ 🔍 Checking Cloudflare Worker health...
[14:32:16] ✓ Worker is responding
[14:32:16] ℹ    Status: 200 OK

[14:32:17] ℹ 🤖 Starting code generation with Claude...
[14:32:19] ✓ Code generated in 2147ms
[14:32:19] ℹ    Model: claude-sonnet-4-5-20250929
[14:32:19] ℹ    Tokens used: 156 in, 89 out
[14:32:19] ℹ    Code length: 234 characters

[14:32:19] ℹ ⚙️  Executing in Cloudflare Sandbox...
[14:32:21] ✓ Sandbox execution completed in 1856ms
[14:32:21] ℹ    Exit code: 0 (success)
[14:32:21] ℹ    Output length: 3 characters

============================================================
📊 PERFORMANCE METRICS
============================================================

Total Execution Time: 4123ms
  ├─ Code Generation: 2147ms
  └─ Sandbox Execution: 1856ms
Memory Usage: 48MB

Status: Success ✓
============================================================
```

## 🎯 Debugging Specific Scenarios

### 1. Code Generation Issues
```bash
# Use monitor to see exact Claude API interaction
node monitor.ts "Complex prompt that might fail"

# Look for:
# - Token usage (may hit limits)
# - Generated code preview
# - Model used (should be claude-sonnet-4-5)
```

### 2. Sandbox Execution Problems
```bash
# Check worker logs while testing
npx wrangler tail &
node launcher.ts "Test prompt"

# Look for:
# - Sandbox creation errors
# - File write failures
# - Python execution errors
```

### 3. Performance Issues
```bash
# Use monitor to identify bottlenecks
node monitor.ts "Your prompt"

# Compare metrics:
# - Code Generation Time (Claude API)
# - Sandbox Execution Time (Cloudflare)
# - Total Round Trip Time
```

### 4. Network/Deployment Issues
```bash
# Check deployments
npx wrangler deployments list

# View recent logs
npx wrangler tail --format=pretty

# Test worker health
curl -v https://your-worker.workers.dev
```

## 🛠 Advanced Configuration

### Enable Debug Mode:
```bash
# In wrangler.toml
[env.development]
vars = { DEBUG = "true" }

# Or in .dev.vars for local development
DEBUG=true
ANTHROPIC_API_KEY=your_key
```

### Custom Timeouts:
```typescript
// In src/index.ts
const result = await sandbox.exec('python /tmp/code.py', {
  timeout: 60000, // 60 seconds
});
```

### Verbose Logging:
```bash
# Set log level
export WRANGLER_LOG=debug

# Run with verbose output
npx wrangler deploy --verbose
```

## 📋 Debugging Checklist

### Before Reporting an Issue:
- [ ] Cloudflare Workers account active (Paid plan if using Durable Objects)
- [ ] Anthropic API key valid and has credits
- [ ] Worker deployed successfully (`npx wrangler deploy`)
- [ ] Waited 2-3 minutes after first deployment
- [ ] Containers provisioned (`npx wrangler containers list`)
- [ ] Secrets configured (`npx wrangler secret list`)
- [ ] Docker running (for local development)
- [ ] Used monitor tool for detailed metrics
- [ ] Checked worker logs (`npx wrangler tail`)
- [ ] Tested with simple prompt first

### Information to Include in Bug Reports:
- Full monitor output showing timestamps and metrics
- Worker URL or local development environment
- Exact prompt that caused the issue
- Components installed (if applicable)
- Worker logs from `npx wrangler tail`
- Container status from `npx wrangler containers list`
- Error messages with full stack traces
- Node.js and Wrangler versions

## 🚀 Performance Optimization Tips

### 1. Minimize Code Generation Time
```typescript
// Be specific to reduce Claude's thinking time
const prompt = `Generate a single Python function to calculate factorial.
Use recursion. Include only the function, no tests.`;
```

### 2. Use Code Interpreter API
```typescript
// Faster than exec for Python
import { getCodeInterpreter } from '@cloudflare/sandbox';
const interpreter = getCodeInterpreter(env.Sandbox, userId);
const result = await interpreter.notebook.execCell(pythonCode);
```

### 3. Implement Caching
```typescript
// Cache generated code for common prompts
const cacheKey = `code:${hashPrompt(prompt)}`;
let code = await env.CACHE.get(cacheKey);
if (!code) {
  code = await generateCode(prompt);
  await env.CACHE.put(cacheKey, code, { expirationTtl: 3600 });
}
```

### 4. Stream Responses
```typescript
// Stream output for better perceived performance
return new Response(
  new ReadableStream({
    async start(controller) {
      const result = await sandbox.exec(command, {
        onStdout: (data) => controller.enqueue(encoder.encode(data)),
      });
      controller.close();
    },
  })
);
```

## 🔗 Useful Commands Reference

### Deployment & Management
```bash
# Deploy worker
npx wrangler deploy

# Deploy to specific environment
npx wrangler deploy --env production

# Rollback deployment
npx wrangler rollback

# Delete deployment
npx wrangler delete
```

### Secrets Management
```bash
# Add secret
npx wrangler secret put SECRET_NAME

# List secrets
npx wrangler secret list

# Delete secret
npx wrangler secret delete SECRET_NAME
```

### Local Development
```bash
# Start dev server
npm run dev

# Start with specific port
npx wrangler dev --port 3000

# Start with remote Durable Objects
npx wrangler dev --remote
```

### Monitoring & Logs
```bash
# Tail logs in real-time
npx wrangler tail

# Tail with pretty formatting
npx wrangler tail --format=pretty

# Tail specific deployment
npx wrangler tail --deployment-id <id>

# Filter logs
npx wrangler tail --status error
```

### Container Management
```bash
# List containers
npx wrangler containers list

# Get container details
npx wrangler containers describe <container-id>
```

## 💡 Tips & Best Practices

1. **Always test locally first**: Use `npm run dev` before deploying
2. **Monitor metrics**: Use the monitor tool to track performance
3. **Check logs regularly**: Set up `npx wrangler tail` during testing
4. **Use environment-specific configs**: Separate dev/prod in wrangler.toml
5. **Implement error handling**: Catch and log all errors properly
6. **Set appropriate timeouts**: Balance between user experience and resource usage
7. **Use Durable Objects wisely**: Only for stateful operations
8. **Cache aggressively**: Reduce API calls with smart caching
9. **Stream when possible**: Better UX for long operations
10. **Version your deployments**: Tag releases for easy rollback

---

**With these tools and techniques, you can effectively debug and optimize your Cloudflare sandbox implementation.**

Preview capped at 60,000 characters. Download the bundle for every original file and notice.

Read the redistribution license
MIT License

Copyright (c) 2025 Daniel (San) Ávila

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Bundle SHA-256: 4a8a38bc9da78446e11d952d9d9ce19a772cb08b0c86c3eafa89a5ebcf323a4b. Files are served as downloads and are never executed by this page.