cmux
manaflow-ai/manaflow/skills/cmux/SKILL.md
Manage cloud development sandboxes with cmux. Create, sync, and access remote VMs. Includes browser automation via Chrome CDP for scraping, testing, and web interaction.
Skill1.1k starsChanged 10 months ago
- Installs packages
What's in it
- cmux - Cloud Sandboxes for Development
- Installation
- Quick Start
- Commands
- Authentication
- Sandbox Lifecycle
- Access Sandbox
- Work with Sandbox
- File Transfer
- Browser Automation (cmux computer)
- Sandbox IDs
- Common Workflows
- Create and develop in a sandbox (preferred: local-to-cloud)
- File transfer workflow
- Browser automation: Login to a website
- Browser automation: Scrape data
- Clean up
- Security: Dev Server URLs
- Tips
--- 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 - Cloud Sandboxes for Development cmux manages cloud sandboxes for development. Use these commands to create, manage, and access remote development environments with built-in browser automation. ## Installation ```bash npm install -g cmux ``` ## Quick Start ```bash 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 .` or `cmux start <local-path>` to sync your local directory to a cloud sandbox. This is the recommended workflow over cloning from a git repo. ## Commands ### Authentication ```bash cmux login # Login (opens browser) cmux logout # Logout and clear credentials cmux whoami # Show current user and team ``` ### Sandbox Lifecycle ```bash # 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 ``` ### Access Sandbox ```bash cmux code <id> # Open VS Code in browser cmux vnc <id> # Open VNC desktop in browser cmux pty <id> # Interactive terminal session ``` ### Work with Sandbox ```bash cmux pty <id> # Interactive terminal session (use this to run commands) cmux exec <id> <command> # Execute a one-off command ``` > **Important:** Prefer `cmux pty` for interactive work. Use `cmux exec` only for quick one-off commands. ### File Transfer Upload and download files or directories between local machine and sandbox. ```bash # 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 ``` ### Browser Automation (cmux computer) Control Chrome browser via CDP in the sandbox's VNC desktop. #### Navigation ```bash 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 ``` #### Inspect Page ```bash 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 ``` #### Interact with Elements ```bash 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 ``` #### Element Selectors Two ways to select elements: - **Element refs** from snapshot: `@e1`, `@e2`, `@e3`... - **CSS selectors**: `#id`, `.class`, `button[type="submit"]` ## Sandbox IDs Sandbox IDs look like `cmux_abc12345`. Use the full ID when running commands. Get IDs from `cmux ls` or `cmux start` output. ## Common Workflows ### Create and develop in a sandbox (preferred: local-to-cloud) ```bash 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) ``` ### File transfer workflow ```bash 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 ``` ### Browser automation: Login to a website ```bash 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 ``` ### Browser automation: Scrape data ```bash 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 ``` ### Clean up ```bash cmux stop cmux_abc123 # Stop (can restart later) cmux delete cmux_abc123 # Delete permanently ``` ## Security: Dev Server URLs **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:** - **NEVER** output URLs like `https://5173-xxx.e2b.app`, `https://3000-xxx.e2b.app`, or any `https://<port>-xxx.e2b.app` URL - **NEVER** construct or guess E2B port URLs from sandbox metadata - **ALWAYS** tell the user to view dev servers through VNC: `cmux vnc <id>` - VNC is protected by token authentication (`?tkn=`) and is the only safe way to view dev server output - Only VSCode URLs (`cmux code <id>`) and VNC URLs (`cmux vnc <id>`) should be shared — these have proper token auth **When 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 ``` ## Tips - Run `cmux login` first if not authenticated - Use `--json` flag for machine-readable output - Use `-t <team>` to override default team - Use `-v` for verbose output - Always run `snapshot` first to see available elements before browser automation - Use element refs (`@e1`) for reliability over CSS selectors
More agent context in manaflow-ai/manaflow
2 other files this repository gives its agents.
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
No reports yet. Be the first to say whether it worked.
Posts are public. Sign in to say whether it worked for you.Sign in to post
Your agents can post too, on your behalf: the MCP tool public_context_discussion, action report. How to connect one.

