Deep dive into Maestro’s execution environment.Documentation Index
Fetch the complete documentation index at: https://docs.igent.ai/llms.txt
Use this file to discover all available pages before exploring further.
What Is the Sandbox?
The sandbox is a cloud-based Ubuntu Linux environment attached to your session. Think of it as a clean, disposable computer where Maestro can:- Compile and run code
- Execute tests and benchmarks
- Start web servers
- Install packages
- Perform real validation
Sandbox Lifecycle
Starting
- Sandbox starts on first terminal command in a session
- Fresh Ubuntu environment each time
- Passwordless root access via
sudo - Port 8080 exposed on public preview URL
Running
- Processes run until explicitly stopped
- Web servers keep serving
- Long-running tasks continue in background
- Terminal windows maintain state
Auto-Termination
After periods of inactivity, the sandbox automatically terminates: Default behavior:- 1 hour after last execution
- Applies when no commands have been run for 60 minutes
- Session itself is preserved (checkpointed)
- Sandbox resources cleaned up
- Enable “Persist Sandbox” in settings UI
- Extends auto-termination to 24 hours after last execution
- Useful for long-running demos or extended breaks
- Still terminates eventually to free resources
Resuming
- When you send another command, a new sandbox starts
- Files restore automatically from session state
- Previously installed packages need reinstallation
- Environment variables need reactivation
Manual Control
/reset-sandboxcommand: Force immediate reset- Confirms before resetting to prevent accidents
- Useful when sandbox becomes unresponsive
System Environment
Operating System
- Distribution: Ubuntu Linux (x86-64)
- User account:
sandboxuser with passwordlesssudo - Resources: 2 vCPU, 7 GB RAM (shared with support services)
- Container: Firecracker microVM (secure isolation)
Default Software
- Python: System Python 3.x with default virtualenv at
./user_venv - Compilers: GCC, system development tools
- Package managers:
apt-get(system),pip(Python),npm/pnpm(JavaScript)
Installing Packages
System packages:File Synchronization
Working Directory
Files are mounted to/home/sandbox/. Your session’s file structure is preserved:
Understanding Sandbox Files
Important concepts:- Synced files: Files tracked by Maestro and synchronized between session and sandbox
- Local sandbox files: Files created directly in the sandbox (e.g., via SSH or terminal commands) that are NOT automatically synced
- Ephemeral nature: The sandbox environment itself is temporary and will be terminated after inactivity. Only synced files persist across sandbox resets.
- Files created or modified by Maestro’s tools are automatically synced and persist
- Files you create via SSH or terminal commands in the sandbox are local and ephemeral unless they’re synced file types
- When the sandbox terminates, only synced files are preserved in your session
- Build artifacts, installed packages, and non-synced files are lost when sandbox terminates
Synchronization Behavior
Automatically Synchronized:- Text-based source code files
- Configuration files (JSON, YAML, TOML, etc.)
- Documentation (Markdown, text)
- Specific media: PNG, JPG, WebP, GIF, PDF
- Build artifacts
- Dependencies (node_modules, .venv, etc.)
- Large binaries
- Temporary files
- Log directories
- To sandbox: All synced file changes sync immediately (eager synchronization)
- From sandbox: Only source code and specific media types sync back to session
- Live reload: If server running, sees changes instantly
- SSH changes: When you SSH to the sandbox and modify synced files, those changes will sync back to Maestro’s file system
Working with SSH
If you connect to the sandbox via SSH:- Changes to synced files (e.g., editing a Python file) will sync back to Maestro’s session
- Changes to non-synced files (e.g., adding files to node_modules) will NOT sync and are ephemeral
- Use synced directories (
/home/sandbox/) for files you want to persist - Use temporary directories or excluded paths for ephemeral work
Managing File Synchronization
Use.gitignore to prevent syncing unwanted files:
/home/sandbox/
File Visibility to Maestro
Maestro can see (via View Files tool):- All text-representable source code
- PNG, JPG, WebP, GIF, PDF files
- Compiled binaries
- Large data files
- Non-synchronized formats
Network and Ports
Public Access
- Port 8080: Only port exposed publicly
- Preview URL: Unique per sandbox (e.g.,
abc123.preview.igent.ai) - Access: Anyone with URL can access (don’t share sensitive services)
vite.config.js:
Local Access
- Localhost: Services on any port accessible within sandbox
- Internal testing: Test APIs on any port from terminal
Reverse Proxy Pattern
For multi-service deployments on port 8080:Terminal Windows
Named Windows
Maestro uses named terminal windows to isolate activities:- Parallel execution
- Process isolation
- Clear organization
- Easy to reference
Window Behavior
Reusing windows:- Running new command in active window cancels previous command
- Use different window names to keep multiple processes running
- Created on first use
- Persist across commands
- Auto-close after 600s of inactivity
- Manually close with Close Terminal Windows tool
Terminal Streaming
When Maestro runs commands, you see real-time output:- Command execution
- Build progress
- Test results
- Server logs
- Shows while Maestro watches command
- Disappears when command background or complete
- Command may still be running after streamer hidden
Running Tests and Benchmarks
Test Execution
Full test suite:Benchmarking
Standard benchmarking:Web Development in Sandbox
Starting Servers
Development servers:Accessing Services
From sandbox:Advanced Sandbox Features
Multiple Sandbox Instances
Create additional sandboxes with custom configurations: Standard additional sandbox:Use Cases for Multiple Sandboxes
Isolation:- Primary sandbox for development
- Secondary for benchmarking (prevent interference)
- Third for testing different configurations
- High-memory sandbox for data processing
- GPU sandbox for ML training
- Standard sandbox for testing
- Docker sandbox for containerized workflows
- SSH sandbox for remote systems
- Privileged sandbox for special requirements
Environment Variables and Secrets
Secret Activation
Flow:- Register secrets in Secret Manager (top-right menu)
- Use
/secretscommand to activate for session - Secrets appear as environment variables in sandbox
Security
Isolation guarantees:- Secrets never exposed in logs
- Session-scoped only
- Automatic cleanup on session end
- Never visible to other users/sessions
- Activate only when needed
- Deactivate sensitive secrets after use
- Review active secrets regularly
Limitations and Constraints
Container Constraints
No nested containers:- Cannot run Docker inside default sandbox
- No Podman or other containerization
- Use privileged sandbox if you need Docker support
- Firecracker microVM limitation
- 2 vCPU / 7 GB RAM (default)
- No GPU access (yet, coming soon)
- Shared with support services
File System Constraints
Path recommendations:/home/sandbox/: Synchronized code and docs/tmp/: Temporary files, not synchronized- Other paths: Use for builds, logs, caches
- Large files outside
/home/sandbox/ - Use
.gitignoreto exclude heavy artifacts - Prevents slow synchronization
Network Constraints
Outbound: Full internet access (HTTPS, databases, APIs, etc.) Inbound: Only port 8080 exposed publicly Solutions for multiple services:Sandbox Tricks and Advanced Usage
Installing IDEs in Sandbox
VSCode Server:Ad-Hoc File Downloads
For large datasets or binary artifacts:Database Development
SQLite (local):Accessing External Services
AWS:Troubleshooting
Sandbox Not Responding
Symptoms:- Commands timeout
- No terminal output
- UI shows “sandbox unavailable”
- Wait for auto-recovery (sandbox health monitoring active)
- Use
/reset-sandboxto force reset - Check if processes consumed all resources
Processes Won’t Stop
Issue: Server or process won’t terminate Solutions:/reset-sandbox if kill doesn’t work.
Files Not Syncing
Check:- Is file under
/home/sandbox/? - Is it in
.gitignore? - Is it a synchronized file type?
- Move files to
/home/sandbox/ - Remove from
.gitignoreif needed - Use sandbox tools to inspect non-synchronized files
Port 8080 Already in Use
Cause: Previous server not stopped Solutions:Best Practices
File Organization
Good structure:Process Management
Use named windows for different activities:Resource Efficiency
Don’t consume unnecessary resources:- Stop servers when not needed
- Clean up
/tmp/periodically - Avoid infinite loops
- Monitor resource usage with
htop
Security Practices
Secrets:- Activate only when needed
- Deactivate after use
- Never commit to files
- Don’t share URLs with sensitive data
- Stop services when done testing
- Use authentication if needed
Advanced Patterns
Multi-Stage Testing
CI/CD Simulation
Performance Testing
Debugging Workflows
Python:Sandbox Limitations
What’s NOT Available
No Nested containers: No Docker/Podman inside default sandbox No GPU acceleration: Not yet available (coming soon) No Multiple public ports: Only 8080 exposed No Persistent storage: Sandbox is ephemeral No Rebooting: Don’t reboot - terminates sessionWorkarounds
Need Docker? Use privileged sandbox mode (request via Create Sandbox tool). Need multiple ports? Use reverse proxy on 8080. Need persistence? Files sync to session (they persist). Sandbox state is ephemeral by design. Need GPU? Coming soon. For now, use external GPU services via API.Sandbox vs Local Development
When to Use Sandbox
Running tests - Isolated, reproducible environment Benchmarking - Consistent hardware Validating - Proof code actually works Prototyping - Fast iteration without local setup Collaboration - Same environment for everyoneWhen to Use Local
Heavy IDE usage - VSCode, IntelliJ, etc. GPU-intensive work - Until sandbox supports GPU Large datasets - If sync would be too slow Complex Docker workflows - Until privileged mode Personal preference - Some developers prefer localHybrid Workflows
Common pattern:- Maestro implements and validates in sandbox
- You download changes with
/download-changed - Extract to local project
- Continue development locally
- Or create PR directly from session
Next Steps
Master the sandbox, then explore:- Source Control: GitHub integration workflows
- Session Strategies: Patterns for different projects
- Advanced Features: Power user capabilities
- Troubleshooting: Common issues and solutions

