Loading...
Loading...
Manage cloud development sandboxes with cloudrouter. Create, sync, and access remote VMs with GPU support, Docker, and browser automation. Use when asked to create a sandbox, spin up a dev environment, run code in the cloud, use GPUs, automate a browser, or interact with remote VMs.
npx skill4agent add manaflow-ai/cloudrouter cloudrouter/cloudrouter/crcloudrouter - Cloud Development Sandboxes
Modes:
cloudrouter start . Sync current directory to a cloud sandbox
cloudrouter start --docker . Sandbox with Docker support
cloudrouter start --gpu T4 . Sandbox with T4 GPU (16GB VRAM)
cloudrouter start --gpu A100 . Sandbox with A100 GPU (40GB VRAM)
cloudrouter start --gpu H100 . Sandbox with H100 GPU (80GB VRAM)
Manage:
cloudrouter ls List all sandboxes
cloudrouter code <id> Open VS Code in browser
cloudrouter pty <id> Open terminal session
cloudrouter vnc <id> Open VNC desktop
cloudrouter stop <id> Stop sandbox
Browser automation:
cloudrouter computer open <id> <url> Navigate to URL
cloudrouter computer snapshot <id> Get accessibility tree
cloudrouter computer screenshot <id> Take screenshot
Run "cloudrouter start --help" for all options.npm install -g @manaflow-ai/cloudroutercloudroutercrcloudrouter logincloudrouter logincloudrouter login # Authenticate (opens browser)
cloudrouter start . # Create sandbox from current directory
cloudrouter start --gpu T4 . # Create sandbox with GPU
cloudrouter start --docker . # Create sandbox with Docker
cloudrouter code <id> # Open VS Code
cloudrouter pty <id> # Open terminal session
cloudrouter ls # List all sandboxesPreferred: Always useorcloudrouter start .to sync your local directory to a cloud sandbox. This is the recommended workflow over cloning from a git repo.cloudrouter start <local-path>
cloudrouter login # Login (opens browser)
cloudrouter logout # Logout and clear credentials
cloudrouter whoami # Show current user and team# Standard sandbox (syncs local directory)
cloudrouter start . # Create from current directory (recommended)
cloudrouter start ./my-project # Create from a specific local directory
cloudrouter start -o . # Create and open VS Code immediately
cloudrouter start -n my-sandbox . # Create with a custom name
# With Docker support
cloudrouter start --docker . # Sandbox with Docker enabled
# With GPU
cloudrouter start --gpu T4 . # T4 GPU (16GB VRAM)
cloudrouter start --gpu L4 . # L4 GPU (24GB VRAM)
cloudrouter start --gpu A10G . # A10G GPU (24GB VRAM)
cloudrouter start --gpu A100 . # A100 GPU (40GB VRAM) - requires approval
cloudrouter start --gpu H100 . # H100 GPU (80GB VRAM) - requires approval
cloudrouter start --gpu H100:2 . # Multi-GPU: 2x H100
# With custom resources
cloudrouter start --cpu 8 . # Custom CPU cores
cloudrouter start --memory 16384 . # Custom memory (MiB)
cloudrouter start --image ubuntu:22.04 . # Custom container image
# From git repo
cloudrouter start --git user/repo # Clone a git repo into sandbox
cloudrouter start --git user/repo -b main # Clone specific branch
# Provider selection
cloudrouter start -p e2b . # Use E2B provider (default)
cloudrouter start -p modal . # Use Modal provider| GPU | VRAM | Best For | Availability |
|---|---|---|---|
| T4 | 16GB | Inference, fine-tuning small models | Self-serve |
| L4 | 24GB | Inference, image generation | Self-serve |
| A10G | 24GB | Training medium models | Self-serve |
| L40S | 48GB | Inference, video generation | Requires approval |
| A100 | 40GB | Training large models (7B-70B) | Requires approval |
| A100-80GB | 80GB | Very large models | Requires approval |
| H100 | 80GB | Fast training, research | Requires approval |
| H200 | 141GB | Maximum memory capacity | Requires approval |
| B200 | 192GB | Latest gen, frontier models | Requires approval |
:N--gpu H100:2start-n, --name <name> Name for the sandbox
-o, --open Open VS Code after creation
--docker Enable Docker support (E2B only)
--gpu <type> GPU type (T4, L4, A10G, L40S, A100, H100, H200, B200)
--cpu <cores> CPU cores (e.g., 4, 8)
--memory <MiB> Memory in MiB (e.g., 8192, 65536)
--image <image> Container image (e.g., ubuntu:22.04)
--git <repo> Git repository URL or user/repo shorthand
-b, --branch <branch> Git branch to clone
-p, --provider <name> Sandbox provider: e2b (default), modal
-T, --template <id> Template ID (overrides --docker) — DO NOT use template names from `cloudrouter templates`; use --docker or --gpu flags insteadWarning: Do NOT pass template names (e.g.) to thecmux-devbox-baseflag. These are display names, not valid E2B template IDs. Use-Tfor Docker support and--dockerfor GPU support instead.--gpu <type>
cloudrouter ls # List all sandboxes
cloudrouter status <id> # Show sandbox details and URLs
cloudrouter stop <id> # Stop sandbox (can restart later)
cloudrouter extend <id> # Extend sandbox timeout (default: +1 hour)
cloudrouter extend <id> --seconds 7200 # Extend by 2 hours
cloudrouter delete <id> # Delete sandbox permanently
cloudrouter templates # List available templatescloudrouter code <id> # Open VS Code in browser
cloudrouter vnc <id> # Open VNC desktop in browser
cloudrouter pty <id> # Interactive terminal sessioncloudrouter pty <id> # Interactive terminal session (use this to run commands)
cloudrouter exec <id> <command> # Execute a one-off commandImportant: Preferfor interactive work. Usecloudrouter ptyonly for quick one-off commands.cloudrouter exec
cloudrouter upload <id> [local-path]cloudrouter download <id> [local-path]-r <remote-path>/home/user/workspace-r# Upload (local -> sandbox)
cloudrouter upload <id> # Upload current dir to /home/user/workspace
cloudrouter upload <id> ./my-project # Upload directory to workspace
cloudrouter upload <id> ./config.json # Upload single file to workspace
cloudrouter upload <id> . -r /home/user/app # Upload to specific remote path
cloudrouter upload <id> . --watch # Watch and re-upload on changes
cloudrouter upload <id> . --delete # Delete remote files not present locally
cloudrouter upload <id> . -e "*.log" # Exclude patterns
# Download (sandbox -> local)
cloudrouter download <id> # Download workspace to current dir
cloudrouter download <id> ./output # Download workspace to ./output
cloudrouter download <id> ./output -r /home/user/app # Download specific remote dir to ./outputWarning: Theflag expects a directory path, not a file path. To download a single file, download its parent directory and then access the file locally.-rCommon mistake:— this passes 3 positional args and will fail. Usecloudrouter download <id> /remote/path /local/pathinstead.cloudrouter download <id> /local/path -r /remote/path
Startup delay: Chrome CDP may not be ready immediately after sandbox creation. If acommand fails right aftercomputer, wait a few seconds and retry. This is rare but expected — Chrome needs a moment to boot inside the sandbox.cloudrouter start
cloudrouter computer open <id> <url> # Navigate to URL
cloudrouter computer back <id> # Navigate back
cloudrouter computer forward <id> # Navigate forward
cloudrouter computer reload <id> # Reload page
cloudrouter computer url <id> # Get current URL
cloudrouter computer title <id> # Get page titlecloudrouter computer snapshot <id> # Get accessibility tree with element refs (@e1, @e2...)
cloudrouter computer screenshot <id> # Take screenshot (base64 to stdout)
cloudrouter computer screenshot <id> out.png # Save screenshot to filecloudrouter computer click <id> <selector> # Click element (@e1 or CSS selector)
cloudrouter computer type <id> "text" # Type into focused element
cloudrouter computer fill <id> <sel> "value" # Clear input and fill with value
cloudrouter computer press <id> <key> # Press key (Enter, Tab, Escape, etc.)
cloudrouter computer hover <id> <selector> # Hover over element
cloudrouter computer scroll <id> [direction] # Scroll page (up/down/left/right)
cloudrouter computer wait <id> <selector> # Wait for element to appear@e1@e2@e3#id.classbutton[type="submit"]cr_abc12345cloudrouter lscloudrouter startcloudrouter start ./my-project # Creates sandbox, uploads files
cloudrouter code cr_abc123 # Open VS Code
cloudrouter pty cr_abc123 # Open terminal to run commands (e.g. npm install && npm run dev)cloudrouter start --gpu A100 ./ml-project # Sandbox with A100 GPU
cloudrouter pty cr_abc123 # Open terminal
# Inside: pip install -r requirements.txt && python train.py
cloudrouter download cr_abc123 ./checkpoints # Download trained modelcloudrouter start --docker ./my-app # Sandbox with Docker
cloudrouter pty cr_abc123 # Open terminal
# Inside: docker compose up -dcloudrouter upload cr_abc123 ./my-project # Push local files to sandbox
# ... do work in sandbox ...
cloudrouter download cr_abc123 ./output # Pull files from sandbox to localcloudrouter computer open cr_abc123 "https://example.com/login"
cloudrouter computer snapshot cr_abc123
# Output: @e1 [input] Email, @e2 [input] Password, @e3 [button] Sign In
cloudrouter computer fill cr_abc123 @e1 "user@example.com"
cloudrouter computer fill cr_abc123 @e2 "password123"
cloudrouter computer click cr_abc123 @e3
cloudrouter computer screenshot cr_abc123 result.pngcloudrouter computer open cr_abc123 "https://example.com/data"
cloudrouter computer snapshot cr_abc123 # Get structured accessibility tree
cloudrouter computer screenshot cr_abc123 # Visual capturecloudrouter lscloudrouter extend <id>--seconds <N>--timeoutcloudrouter extend cr_abc123 --seconds 1800cloudrouter stop <id>cloudrouter delete <id>cloudrouter lscloudrouter ls # Check running sandboxes and count
cloudrouter extend cr_abc123 # Extend by 1 hour (default)
cloudrouter extend cr_abc123 --seconds 3600 # Extend by custom duration
# ... share URLs, let user verify ...
cloudrouter stop cr_abc123 # Stop when done (can restart later)
cloudrouter delete cr_abc123 # Delete only if clearly disposablecloudrouter code <id>cloudrouter vnc <id>cloudrouter computer screenshot <id> out.pnghttps://5173-xxx.e2b.apphttps://5173-xxx.e2b.apphttps://3000-xxx.e2b.apphttps://<port>-xxx.e2b.appcloudrouter vnc <id>?tkn=cloudrouter code <id>cloudrouter vnc <id>Dev server running on port 5173
View it in your sandbox's VNC desktop: cloudrouter vnc <id>
(The browser inside VNC can access http://localhost:5173)Frontend: https://5173-xxx.e2b.app <- WRONG: publicly accessible, no auth-t, --team <team> Team slug (overrides default)
-v, --verbose Verbose output
--json Machine-readable JSON output