| name | vmux |
| description | Deploy to vmux cloud compute. Use when user says "deploy", "vmux", "run in cloud", "preview URL", or wants to run commands on remote compute. |
vmux - Cloud Compute in 5 Seconds
Run any command in the cloud. Close your laptop, keep running.
Setup
vmux whoami
vmux login
vmux run
vmux run [flags] <command>
Flags
| Flag | Short | Description |
|---|
--json | | Emit JSON events (for LLM/agent use) |
--detach | -d | Run in background, return job ID immediately |
--port <port> | -p | Expose port for preview URL (can use multiple times) |
--preview | | Auto-detect port from framework and expose it |
--env KEY=VAL | -e | Set environment variable |
--no-bundle | | Skip bundling local packages (faster for scripts) |
Flag Combinations
Flags can be combined: -dp 8000 = detached + port 8000
vmux run python script.py
vmux run -d python script.py
vmux run -p 8000 python server.py
vmux run -dp 8000 python server.py
vmux run -d --preview bun run dev
vmux run -p 3000 -p 8000 npm run dev
vmux run -e API_KEY=xxx python app.py
JSON Mode (for LLMs/agents)
vmux run --json -d python server.py
After Deploy
Always give the user:
- The preview URL (if port exposed) - format:
https://<port>-<job-id>-<token>.purr.ge
- The job ID
- How to monitor:
vmux logs -f <job-id>
- How to stop:
vmux stop <job-id>
Other Commands
vmux ps
vmux logs <job-id>
vmux logs -f <job-id>
vmux logs --tail 50 <job-id>
vmux logs -f --tail 50 <job-id>
vmux logs --json <job-id>
vmux logs --json --tail 20 <job-id>
vmux exec <job-id> <cmd>
vmux exec <job-id> --file SRC[:DST] <cmd>
vmux exec --json <job-id> <cmd>
vmux exec --create <cmd>
vmux exec --create --provider cloudflare <cmd>
vmux exec --create --gpu H100 <cmd>
vmux attach <job-id>
vmux stop <job-id>
vmux stop -a
vmux debug <job-id>
vmux secret set KEY
Agent Workflow
For LLM/agent automation, use --json flags:
vmux run --json -d -p 8000 python server.py
vmux exec --json --create --gpu H100 "pip install torch"
vmux logs --json --tail 20 abc123
vmux exec --json abc123 "python train.py"
vmux stop abc123
Empty Sandbox (for interactive use)
vmux run -d sleep infinity
vmux run -d --provider modal --gpu H100 sleep infinity
vmux exec --create "pip install torch"
vmux exec --create --provider cloudflare "apt install -y curl"
vmux exec --create --gpu H100 "pip install torch"
Upload Local Files Into a Job
Use vmux exec --file to upload local scripts/configs into a running job (works on both Cloudflare and Modal providers):
vmux exec <job-id> --file ./prepare.py python /workspace/prepare.py
vmux exec <job-id> --file ./cfg.json:/workspace/cfg.json python train.py --config /workspace/cfg.json
Monitoring Long-Running Commands
Important: vmux exec is non-streaming. For tailing logs:
Option 1: Pipe to stdout + vmux logs (Recommended)
Run training with output to stdout:
vmux exec <job-id> "python -u train.py 2>&1 | tee -a train.log"
Then stream via:
vmux logs -f <job-id>
Option 2: Poll log files
For file-based logs, poll periodically:
vmux exec <job-id> "tail -n 50 train.log"
Option 3: Inspect Files via exec
vmux exec <job-id> "tail -n 50 /workspace/train.log"
Option 4: Attach for interactive tailing
vmux attach <job-id>
tail -f train.log