一键导入
cmux
// Manage cloud development sandboxes with cmux. Create, sync, and access remote VMs. Includes browser automation via Chrome CDP for scraping, testing, and web interaction.
// Manage cloud development sandboxes with cmux. Create, sync, and access remote VMs. Includes browser automation via Chrome CDP for scraping, testing, and web interaction.
| name | cmux |
| description | Manage cloud development sandboxes with cmux. Create, sync, and access remote VMs. Includes browser automation via Chrome CDP for scraping, testing, and web interaction. |
cmux manages cloud sandboxes for development. Use these commands to create, manage, and access remote development environments with built-in browser automation.
npm install -g cmux
cmux login # Authenticate (opens browser)
cmux start ./my-project # Create sandbox, upload directory → returns ID
cmux start . # Or use current directory
cmux code <id> # Open VS Code
cmux pty <id> # Open terminal session
cmux upload <id> ./my-project # Upload files/directories to sandbox
cmux download <id> ./output # Download files from sandbox
cmux computer screenshot <id> # Take browser screenshot
cmux stop <id> # Stop sandbox
cmux delete <id> # Delete sandbox
cmux ls # List all sandboxes
Preferred: Always use
cmux start .orcmux start <local-path>to sync your local directory to a cloud sandbox. This is the recommended workflow over cloning from a git repo.
cmux login # Login (opens browser)
cmux logout # Logout and clear credentials
cmux whoami # Show current user and team
# Preferred: local-to-cloud (syncs your local directory to the sandbox)
cmux start . # Create sandbox from current directory (recommended)
cmux start ./my-project # Create sandbox from a specific local directory
cmux start -o . # Create from local dir and open VS Code immediately
# Alternative: clone from git
cmux start --git user/repo # Clone a git repo into sandbox
cmux start --docker # Create sandbox with Docker support
cmux ls # List all sandboxes
cmux status <id> # Show sandbox details and URLs
cmux stop <id> # Stop sandbox
cmux extend <id> # Extend sandbox timeout
cmux delete <id> # Delete sandbox permanently
cmux templates # List available templates
cmux code <id> # Open VS Code in browser
cmux vnc <id> # Open VNC desktop in browser
cmux pty <id> # Interactive terminal session
cmux pty <id> # Interactive terminal session (use this to run commands)
cmux exec <id> <command> # Execute a one-off command
Important: Prefer
cmux ptyfor interactive work. Usecmux execonly for quick one-off commands.
Upload and download files or directories between local machine and sandbox.
# Upload (local → sandbox)
cmux upload <id> # Upload current dir to /home/user/workspace
cmux upload <id> ./my-project # Upload directory to workspace
cmux upload <id> ./config.json # Upload single file to workspace
cmux upload <id> . -r /home/user/app # Upload to specific remote path
cmux upload <id> . --watch # Watch and re-upload on changes
cmux upload <id> . --delete # Delete remote files not present locally
cmux upload <id> . -e "*.log" # Exclude patterns
# Download (sandbox → local)
cmux download <id> # Download workspace to current dir
cmux download <id> ./output # Download workspace to ./output
cmux download <id> . -r /home/user/app # Download from specific remote path
Control Chrome browser via CDP in the sandbox's VNC desktop.
cmux computer open <id> <url> # Navigate to URL
cmux computer back <id> # Navigate back
cmux computer forward <id> # Navigate forward
cmux computer reload <id> # Reload page
cmux computer url <id> # Get current URL
cmux computer title <id> # Get page title
cmux computer snapshot <id> # Get accessibility tree with element refs (@e1, @e2...)
cmux computer screenshot <id> # Take screenshot (base64 to stdout)
cmux computer screenshot <id> out.png # Save screenshot to file
cmux computer click <id> <selector> # Click element (@e1 or CSS selector)
cmux computer type <id> "text" # Type into focused element
cmux computer fill <id> <sel> "value" # Clear input and fill with value
cmux computer press <id> <key> # Press key (Enter, Tab, Escape, etc.)
cmux computer hover <id> <selector> # Hover over element
cmux computer scroll <id> [direction] # Scroll page (up/down/left/right)
cmux computer wait <id> <selector> # Wait for element to appear
Two ways to select elements:
@e1, @e2, @e3...#id, .class, button[type="submit"]Sandbox IDs look like cmux_abc12345. Use the full ID when running commands. Get IDs from cmux ls or cmux start output.
cmux start ./my-project # Creates sandbox, uploads files
cmux code cmux_abc123 # Open VS Code
cmux pty cmux_abc123 # Open terminal to run commands (e.g. npm install && npm run dev)
cmux upload cmux_abc123 ./my-project # Push local files to sandbox
# ... do work in sandbox ...
cmux download cmux_abc123 ./output # Pull files from sandbox to local
cmux computer open cmux_abc123 "https://example.com/login"
cmux computer snapshot cmux_abc123
# Output: @e1 [input] Email, @e2 [input] Password, @e3 [button] Sign In
cmux computer fill cmux_abc123 @e1 "user@example.com"
cmux computer fill cmux_abc123 @e2 "password123"
cmux computer click cmux_abc123 @e3
cmux computer screenshot cmux_abc123 result.png
cmux computer open cmux_abc123 "https://example.com/data"
cmux computer snapshot cmux_abc123 # Get structured accessibility tree
cmux computer screenshot cmux_abc123 # Visual capture
cmux stop cmux_abc123 # Stop (can restart later)
cmux delete cmux_abc123 # Delete permanently
CRITICAL: NEVER share or output raw E2B port-forwarded URLs.
When a dev server runs in the sandbox (e.g., Vite on port 5173, Next.js on port 3000), E2B creates publicly accessible URLs like https://5173-xxx.e2b.app. These URLs have NO authentication — anyone with the link can access the running application.
Rules:
https://5173-xxx.e2b.app, https://3000-xxx.e2b.app, or any https://<port>-xxx.e2b.app URLcmux vnc <id>?tkn=) and is the only safe way to view dev server outputcmux code <id>) and VNC URLs (cmux vnc <id>) should be shared — these have proper token authWhen a dev server is started:
✓ Dev server running on port 5173
View it in your sandbox's VNC desktop: cmux vnc <id>
(The browser inside VNC can access http://localhost:5173)
NEVER do this:
Frontend: https://5173-xxx.e2b.app ← WRONG: publicly accessible, no auth
cmux login first if not authenticated--json flag for machine-readable output-t <team> to override default team-v for verbose outputsnapshot first to see available elements before browser automation@e1) for reliability over CSS selectors