mprocs - Hoja de Referencia de Ejecución de Múltiples Comandos en Paralelo
mprocs ejecuta varios comandos de larga duración a la vez, cada uno en su propio panel etiquetado con salida y scrollback independientes, controlados desde una única TUI. Está diseñado para la situación común de desarrollo donde de otro modo abrirías múltiples terminales o splits de tmux para ejecutar un servidor frontend, un backend, un watcher y una base de datos. Define los procesos una vez en un archivo de configuración e inícialos todos juntos.
Instalación
| Plataforma | Comando |
|---|
| Cargo (todas las plataformas) | cargo install mprocs |
| macOS (Homebrew) | brew install mprocs |
| npm | npm install -g mprocs |
| Arch Linux (AUR) | yay -S mprocs |
| Scoop (Windows) | scoop install mprocs |
| Binario precompilado | Descarga desde la página de GitHub Releases |
Uso Básico
| Comando | Descripción |
|---|
mprocs | Comienza usando mprocs.yaml en el directorio actual |
mprocs "npm run dev" "npm run api" | Ejecuta comandos ad-hoc como panels |
mprocs -c path/to/mprocs.yaml | Usa un archivo de configuración específico |
mprocs --names web,api "npm run dev" "cargo run" | Nombra panels ad-hoc |
mprocs --help | Lista completa de opciones |
Configuración (mprocs.yaml)
procs:
web:
shell: "npm run dev"
api:
shell: "cargo run"
db:
shell: "docker compose up postgres"
autostart: false # inicia manualmente con la UI
worker:
cmd: ["python", "worker.py"]
cwd: "./backend"
env:
LOG_LEVEL: debug
| Campo | Propósito |
|---|
shell | Comando ejecutado a través del shell |
cmd | Comando como una lista argv (sin análisis de shell) |
cwd | Directorio de trabajo para el proceso |
env | Variables de entorno por proceso |
autostart | Si el proceso inicia al lanzar |
stop | Cómo detenerlo (SIGTERM, SIGKILL, hard-kill) |
Controles de Teclado
| Tecla | Acción |
|---|
Ctrl+a luego j/k | Mueve selección hacia arriba/abajo en la lista de procesos |
Ctrl+a luego s | Inicia el proceso seleccionado |
Ctrl+a luego x | Detiene el proceso seleccionado |
Ctrl+a luego r | Reinicia el proceso seleccionado |
Ctrl+a luego a | Alterna enfoque entre lista y panel (interactúa con el proceso) |
Ctrl+a luego c | Modo copia / desplaza la salida del panel |
Ctrl+a luego q | Sale de mprocs (detiene todos los procesos) |
| Ratón | Haz clic en un proceso para seleccionar; desplaza su salida |
El prefijo predeterminado es Ctrl+a; es configurable. Presiona el prefijo, suelta, luego la tecla de acción.
Control Remoto
mprocs puede ser controlado programáticamente, lo que es útil desde scripts o tareas del editor.
# Envía un comando a una instancia de mprocs en ejecución sobre su socket de control
mprocs --ctl '{c: restart-proc, proc: web}'
Flujos de Trabajo Comunes
# Un comando para traer un stack local completo definido en mprocs.yaml
mprocs
# Rápido de usar y tirar: ve pruebas y un servidor de desarrollo lado a lado
mprocs --names test,dev "npm test -- --watch" "npm run dev"
# Mantén el panel de base de datos presente pero inícialos solo cuando sea necesario (autostart: false)
mprocs vs Alternativas
| Herramienta | Modelo | Mejor para |
|---|
| mprocs | TUI, un panel por proceso | Grupos de procesos dev, configuración simple |
| tmux | Multiplexor de terminal completo | Sesiones, splits, persistencia remota |
| foreman/overmind | Runners de Procfile | Gestión de procesos basada en Procfile |
| GNU parallel | Paralelismo por lotes | Ejecutar muchos trabajos cortos, no servidores de larga duración |
Recursos