+250 skills, dinamita para tu productividad 🧨Explorar →

cmux: guía para usar el terminal de agentes de IA

Tabla de contenidos

Tienes tres agentes trabajando a la vez. Uno arregla un bug, otro rehace una landing y el tercero revisa una PR. Al rato llega la notificación de macOS: “Claude is waiting for your input”. ¿Cuál de los tres? Ni idea. Toca recorrer pestañas una a una hasta dar con el que se ha quedado parado.

cmux nace de esa frustración exacta. Es un terminal nativo para macOS, construido sobre Ghostty, que añade lo que le falta a un terminal normal cuando trabajas con agentes de IA: una barra lateral con una pestaña por tarea, avisos que te dicen qué panel te necesita y un navegador dentro del propio terminal.

Este post es una guía de uso: al terminar de leer sabrás montarla y trabajar con ella mañana. Para escribirlo he leído la documentación oficial y el código del repositorio, y he ejecutado la versión de terminal de cmux (npx cmux) en Linux con Claude Code dentro, arreglando un bug real. Las capturas de esa sesión son mías; las de la app de macOS son las oficiales del repositorio.

Esto es lo que vas a encontrar:

  • Qué es cmux y en qué se diferencia de un terminal con pestañas
  • Cómo se instala y qué comprobar en el primer arranque
  • Cómo organiza el trabajo: ventana, workspace, panel y pestaña
  • Una sesión completa paso a paso con un agente, desde el workspace hasta los tests en verde
  • Cómo funcionan los avisos, el navegador integrado y la automatización con cmux.json
  • Qué hacer si no usas Mac

¿Qué es cmux y qué problema resuelve?

cmux es un terminal open source para macOS pensado para trabajar con varios agentes de programación en paralelo. No es un agente ni un orquestador: no decide nada por ti. Es un terminal con tres añadidos que cambian el día a día: pestañas verticales con contexto, un sistema de notificaciones para agentes y un navegador que se abre en un split al lado de tu código.

Ventana de cmux en macOS con la barra lateral de workspaces a la izquierda, cada uno con su rama, PR y último mensaje del agente, y varios paneles con Claude Code, Codex, un servidor de desarrollo y dos navegadores
Captura oficial del repositorio: sidebar con un workspace por tarea, agentes en splits y navegadores al lado del terminal.

Lo ha creado el equipo de Manaflow y está publicado en GitHub bajo licencia GPL-3.0. La app de macOS es gratuita. La versión más reciente cuando escribo esto es la 0.65.0, del 5 de octubre de 2026.

Su autor explica en el README de dónde salió. Ejecutaba muchas sesiones de Claude Code y Codex en paralelo dentro de Ghostty, con un montón de splits, y dependía de las notificaciones de macOS para saber cuándo un agente le necesitaba. El problema: el aviso de Claude Code siempre dice lo mismo, sin contexto, y con muchas pestañas abiertas ya no podía ni leer los títulos. Probó orquestadores con interfaz gráfica, pero casi todos eran apps de Electron o Tauri y además te encierran en su flujo. Así que construyó un terminal nativo en Swift y AppKit que se apoya en libghostty para pintar el texto.

En la práctica, cmux te resuelve tres cosas:

  1. Saber quién te necesita. Cuando un agente espera tu respuesta, su panel se marca con un anillo azul y su pestaña se ilumina en la barra lateral, con el último mensaje visible.
  2. Tener contexto sin abrir nada. Cada pestaña de la barra lateral muestra la rama de Git, el número y estado de la PR enlazada, el directorio, los puertos que escuchan y el último aviso.
  3. Probar lo que hace el agente sin salir del terminal. El navegador integrado se abre en un split y el agente puede manejarlo con una API.

🔑 cmux se define a sí mismo como “una primitiva, no una solución”. Te da terminal, navegador, avisos, workspaces y un CLI. Cómo los combines con tus agentes es cosa tuya.

Si el término harness te suena difuso, en qué es el AI harness tienes la diferencia entre el modelo, el agente y lo que los rodea. cmux vive en esa última capa: es el sitio donde ejecutas los agentes, no el agente.

¿Cómo se instala cmux?

Descarga el .dmg desde las releases de GitHub y arrastra la app a Aplicaciones, o instálala con Homebrew. Necesitas macOS 14 o superior; funciona en Macs con Apple Silicon y con Intel.

Con Homebrew son dos comandos:

# Añade el tap de Manaflow e instala la app
brew tap manaflow-ai/cmux
brew install --cask cmux

# Para actualizar más adelante
brew upgrade --cask cmux

Si instalas desde el .dmg no tienes que volver a descargarlo: cmux se actualiza solo con Sparkle y te avisa con una etiqueta en la barra de título cuando hay versión nueva. En el primer arranque, macOS puede pedirte que confirmes que quieres abrir una app de un desarrollador identificado. Pulsa Abrir.

Al abrirlo deberías ver tres cosas: una ventana de terminal con la barra lateral de pestañas verticales a la izquierda, un workspace ya abierto y el terminal listo para escribir. Si usas Ghostty, no tienes que configurar nada: cmux lee tu ~/.config/ghostty/config y respeta tus temas, fuentes y colores.

El paso que casi todo el mundo se salta: el CLI

cmux trae un comando, cmux, que es la mitad de la gracia. Dentro de los terminales de cmux funciona sin hacer nada. Para usarlo desde fuera (otro terminal, un script, tu editor), abre la paleta de comandos con ⌘⇧P y ejecuta Shell Command: Install ‘cmux’ in PATH. Si prefieres hacerlo a mano:

# Enlaza el CLI que viene dentro de la app
sudo ln -sf "/Applications/cmux.app/Contents/Resources/bin/cmux" /usr/local/bin/cmux

# Comprueba que responde
cmux ping
cmux workspace list

Dos ajustes más que conviene conocer desde el principio:

  • Hacerlo tu terminal por defecto. En el menú cmux → Make cmux the Default Terminal consigues que los enlaces ssh:// y los scripts que abras desde Finder se abran en cmux.
  • Quién puede controlarlo. cmux expone un socket para automatizarlo. Por defecto solo aceptan conexiones los procesos lanzados dentro de un terminal de cmux. En máquinas compartidas, la documentación recomienda dejarlo así o apagarlo del todo en Ajustes.

¿Cómo organiza cmux el trabajo?

cmux tiene cuatro niveles: ventana, workspace, panel y pestaña. Parece una tontería, pero entenderlo es lo que hace que los atajos, el CLI y los avisos encajen. Este diagrama resume la jerarquía con el ejemplo que vas a ver en la siguiente sección:

Diagrama de la jerarquía de cmux: una ventana con su sidebar de workspaces (agenda-fix con Claude esperando, landing-redesign con Claude terminado y logs-prod), y dentro del workspace seleccionado tres paneles: uno con pestañas claude y zsh, otro con tests y otro con un navegador

Vamos de fuera hacia dentro:

  • Ventana. Una ventana de macOS. Cada una tiene su propia barra lateral. Se abre con ⌘⇧N.
  • Workspace. Cada entrada de la barra lateral. Piensa en él como “una tarea”: un bug, una feature, una revisión. En la interfaz se les llama a menudo “pestañas” porque se comportan como tales; en el CLI y la API se llaman workspace.
  • Panel. Cada región en la que divides un workspace con un split. ⌘D lo parte a la derecha y ⌘⇧D hacia abajo.
  • Pestaña (surface). Cada panel tiene su propia barra de pestañas. Cada pestaña es un terminal o un navegador. Lleva su propio identificador en la variable CMUX_SURFACE_ID, que es lo que usan los scripts para saber dónde están.

Estos son los atajos que vas a usar a diario. El resto los tienes en la documentación, y todos se pueden cambiar en Ajustes:

Qué quieres hacer Atajo
Nuevo workspace ⌘N
Saltar al workspace 1–8 ⌘1… ⌘8
Renombrar workspace ⌘⇧R
Nueva pestaña en el panel ⌘T
Split a la derecha / abajo ⌘D / ⌘⇧D
Moverte entre paneles ⌥⌘ + flechas
Abrir navegador en un split ⌘⇧L
Panel de notificaciones ⌘I
Saltar al último aviso sin leer ⌘⇧U
Paleta de comandos ⌘⇧P
Recargar la configuración ⌘⇧,

💡 Si solo memorizas dos atajos, que sean ⌘N (un workspace por tarea) y ⌘⇧U (ir al agente que te necesita). Con eso ya cambia tu forma de trabajar.

Curso en vídeo

El terminal ordena a tus agentes; el flujo de trabajo lo pones tú

En 4 vídeos ves un flujo completo con un agente, solo con prompts, sobre un proyecto real. Es justo lo que vas a repetir en cada workspace de cmux.

Entra en el curso →

Paso a paso: ¿cómo es una sesión real con un agente en cmux?

El flujo básico es: un workspace por tarea, el agente en un panel, tus herramientas en otros, y cmux avisándote cuando te toca intervenir. Te lo enseño con una sesión que monté para este post.

El proyecto es mínimo: una agenda en JavaScript con una función proximos() que devuelve los eventos de los próximos siete días. Tiene un fallo: usa > y < en lugar de >= y <=, así que se deja fuera los eventos de hoy y los que caen justo en el día siete.

Las capturas de esta sección son de cmux TUI, la versión de terminal que funciona en Linux (más sobre ella al final). La app de macOS hace lo mismo con su interfaz nativa, y te indico el atajo equivalente en cada paso.

Paso 1: crea un workspace para la tarea y dale nombre

Abre un workspace nuevo con ⌘N y renómbralo con ⌘⇧R. Ponle el nombre de la tarea, no el del proyecto: agenda-fix dice mucho más que agenda cuando tienes cinco abiertos. También puedes hacerlo desde el CLI:

# Crea el workspace con nombre y directorio de trabajo
cmux workspace create --name agenda-fix --cwd ~/proyectos/agenda

Paso 2: reparte el espacio en paneles

Divide el workspace en tres: el agente a un lado, y al otro un terminal para comandos sueltos y otro con el servidor de desarrollo. Con ⌘D haces el split a la derecha y con ⌘⇧D partes el panel derecho en dos. Cada panel nuevo hereda el directorio del que lo creaste, así que no tienes que volver a hacer cd.

Desde el CLI, el mismo reparto queda así:

# Panel a la derecha y, dentro de él, otro abajo con el servidor
cmux new-split right
cmux new-split down --command "npm run dev"

Paso 3: lanza el agente y dale la tarea

En el panel grande arrancas Claude Code (o Codex, OpenCode, Gemini CLI…) como siempre. A cmux le da igual qué agente uses. Mi prompt fue este:

Escribe tests con node:test para proximos() en test/agenda.test.js:
un evento de hoy y otro justo a 7 días deben aparecer.
Si fallan, corrige la función.

Paso 4: sigue trabajando y deja que cmux te avise

Mientras el agente trabaja, yo me fui a otro workspace a mirar logs. Claude escribió los tests, vio que fallaban y quiso ejecutar un sed para corregir la función. Como trabajaba en modo manual, se paró a pedir permiso.

En ese momento, el panel de Claude se rodeó de un borde de color y su pestaña se marcó con un punto:

Sesión de cmux TUI con tres paneles: a la izquierda git log, arriba a la derecha Claude Code pidiendo permiso para ejecutar un comando sed con el panel marcado en naranja, y abajo el servidor de la agenda en localhost:3000
Captura propia: Claude pide aprobación y su panel se marca en naranja, con un punto en la pestaña y en la sidebar.

Donde más rinde es cuando estás en otro workspace. La barra lateral te dice de un vistazo qué pasa en cada tarea sin tener que entrar en ella:

Barra lateral de cmux TUI con tres workspaces: agenda-fix con un punto naranja porque Claude espera aprobación, landing-redesign con un punto azul porque Claude ha terminado, y logs-prod seleccionado mostrando logs de peticiones
Captura propia: punto naranja, el agente espera tu permiso; punto azul, el agente ha terminado. Estás en logs-prod y no te pierdes nada.

En la app de macOS el equivalente es el anillo azul alrededor del panel y la pestaña iluminada en la barra lateral. Con ⌘⇧U saltas directo al último aviso sin leer, sin buscar.

Paso 5: revisa y comprueba el resultado

Aprobé el comando, Claude terminó y en el panel de la izquierda ejecuté los tests y el git diff --stat. Dos tests, dos en verde, un fichero cambiado:

El cambio real fue de una línea:

-  return eventos.filter((e) => new Date(e.fecha) > hoy && new Date(e.fecha) < limite);
+  return eventos.filter((e) => new Date(e.fecha) >= hoy && new Date(e.fecha) <= limite);

Paso 6: repite en paralelo

Con esto ya tienes el patrón. Un workspace por tarea, cada uno con su agente y sus paneles, y la barra lateral como cuadro de mando. Mientras Claude arreglaba la agenda, otro Claude contestaba una pregunta sobre el servidor en landing-redesign, y ninguno de los dos me obligó a ir a buscarlo.

⚠️ Que puedas tener diez agentes a la vez no significa que debas. Cada agente que lanzas es un diff que alguien tiene que revisar, y ese alguien eres tú.

¿Cómo te avisa cmux cuando un agente te necesita?

El agente avisa a cmux por una de tres vías (hooks, el comando cmux notify o secuencias de escape del terminal), y cmux lo convierte en señales visuales que se quedan hasta que las miras. Este diagrama resume el recorrido completo:

Diagrama del flujo de notificaciones de cmux: los hooks del agente, el comando cmux notify y las secuencias OSC 9, 99 y 777 llegan a cmux, que muestra un anillo azul en el panel, ilumina la pestaña en la sidebar, enseña el último mensaje y lanza una alerta de escritorio; tú respondes con Cmd Shift U, Cmd I o un clic

Así se ve en la app de macOS, con varios Claude Code repartidos en splits:

cmux en macOS con una cuadrícula de paneles de Claude Code y Codex; los paneles que necesitan atención tienen un borde azul y una anotación roja dice See which panels/splits need attention
Captura oficial del repositorio: el borde azul señala qué split necesita tu atención.

Y así, en la barra lateral, cuando una tarea termina: un contador azul y el último mensaje del agente bajo el nombre del workspace.

Barra lateral de cmux con el workspace Claude Code marcado con un badge azul con el número 1 y el texto Done, The page is now upside down, sobre otros workspaces en estado Running
Captura oficial del repositorio: las tareas terminadas muestran badge y el último aviso.

Conectar tus agentes: cmux hooks setup

Para que el agente avise tienes que instalar sus hooks. Hazlo después de instalar el CLI del agente, para que su binario ya esté en el PATH:

# Instala la integración de todos los agentes que encuentre
cmux hooks setup

# O solo de uno concreto
cmux hooks setup codex
cmux hooks setup --agent opencode

El comando instala la integración de cada agente compatible que encuentra y te imprime un resumen de los que se ha saltado. La lista incluye Claude Code, Codex, Grok, OpenCode, Pi, Amp, Cursor CLI, Gemini, Rovo Dev, Copilot, CodeBuddy, Factory y Qoder. Claude Code es un caso especial: lo gestiona un wrapper propio de cmux cuando activas la integración de Claude en Ajustes.

Esos mismos hooks sirven para otra cosa: guardan el identificador de sesión de cada agente. Así, cuando cierras cmux y lo vuelves a abrir, las sesiones de los agentes compatibles se reanudan en su panel. Más sobre esto en la sección de restaurar sesiones.

Avisar desde tus propios scripts: cmux notify

Los avisos no son solo para agentes. Cualquier proceso que se ejecute en un terminal de cmux puede usarlos. Un caso muy práctico es que te avise cuando termina algo largo:

# Te avisa cuando acaba la build, haya ido bien o mal
npm run build && cmux notify --title "Build" --body "Terminada sin errores" \
  || cmux notify --title "Build" --body "Ha fallado"

Si tu herramienta no puede llamar a un comando, también puede emitir una secuencia de escape. cmux entiende OSC 777 (título y cuerpo) y OSC 99 (con subtítulo e identificador), y la documentación recomienda cmux notify como la vía más sencilla.

💡 La alerta de escritorio se silencia si la ventana de cmux tiene el foco, si ya estás en ese workspace o si tienes abierto el panel de avisos. No te interrumpe cuando ya estás mirando.

Si quieres ir más lejos, cmux.json admite notification hooks: scripts que reciben cada aviso como JSON y deciden si se muestra, si suena o si se descarta. Sirven, por ejemplo, para silenciar los avisos de los subagentes. Aunque eso cmux ya lo hace por defecto con su ajuste automation.suppressSubagentNotifications.

¿Para qué sirve el navegador integrado?

Para ver lo que hace tu agente en el navegador sin salir del terminal, y para que el propio agente lo maneje. Con ⌘⇧L abres un navegador en un split junto al panel en el que estás. Lo típico es tener el servidor de desarrollo en un panel y la web en el de al lado:

cmux en macOS con Claude Code a la izquierda, un servidor de Next.js en localhost 3777 arriba a la derecha y abajo un navegador integrado mostrando esa misma web, con la etiqueta Built in browser
Captura oficial del repositorio: agente, servidor y navegador en el mismo workspace.

La parte interesante es que el navegador es programable. Tiene una API portada de agent-browser, de Vercel, a la que se accede con el grupo de comandos cmux browser. Con ella un agente puede navegar, esperar a que aparezca un elemento, leer el árbol de accesibilidad, hacer clic, rellenar formularios, evaluar JavaScript y sacar capturas. Dicho de otra forma: le pides a Claude Code que compruebe en el navegador que el formulario de login funciona, y lo hace en el split que tienes delante, mientras tú miras.

Dos detalles que ahorran tiempo:

  • Importar sesiones. Puedes importar cookies, historial y sesiones de Chrome, Firefox, Arc y más de veinte navegadores, para que el navegador integrado arranque con la sesión iniciada en tus herramientas.
  • Qué enlaces se abren dentro. En Ajustes → Browser decides qué dominios de los enlaces que pinchas en el terminal se abren en cmux y cuáles en tu navegador de siempre. localhost y similares vienen permitidos por defecto.

Cada semana sale una herramienta nueva para domar a los agentes, y probarlas todas no cabe en una agenda. Cada domingo compartimos con +7.200 developers lo que nos ha servido, gratis desde 2018.

Apúntate gratis →

¿Cómo automatizo cmux con el CLI y cmux.json?

Todo lo que haces con el ratón y los atajos lo puedes hacer con el comando cmux o con su socket, y cmux.json te deja guardar tus rutinas como comandos y layouts reutilizables.

El CLI en cinco usos

Además de crear workspaces, splits y avisos, el CLI puede escribir en otros paneles y pintar información en la barra lateral. Esto último es muy útil para scripts de build o para tus propios agentes:

# Escribe un comando en otro panel y pulsa Enter
cmux send --surface <id> "npm test"
cmux send-key --surface <id> enter

# Pinta un estado, una barra de progreso y un log en la sidebar del workspace
cmux set-status build "compilando"
cmux set-progress 0.5 --label "Construyendo…"
cmux log --level success -- "Deploy terminado"

Para saber dónde estás, cmux identify --json te devuelve la ventana, el workspace, el panel y la pestaña actuales. Y si quieres que tus agentes aprendan a usar todo esto, cmux publica un conjunto de skills que les enseñan a controlar workspaces, el navegador y los ajustes.

Tus rutinas en cmux.json

cmux.json es donde le enseñas a cmux tus costumbres. Puede vivir en .cmux/cmux.json dentro de un proyecto, en ~/.config/cmux/cmux.json para todos, o en los dos sitios; el del proyecto gana. Tiene dos piezas principales:

  • commands: comandos que lanzas desde la paleta (⌘⇧P). Pueden escribir una orden en el terminal activo o abrir un workspace entero con su reparto de paneles.
  • actions: acciones con identificador que puedes atar a un atajo, a un botón de la barra de pestañas o al menú del botón +. La documentación las marca todavía como función de las versiones nightly.

Este ejemplo abre, desde la paleta, un workspace con el agente arriba y, abajo, el servidor al lado de un navegador apuntando a él:

{
  "commands": [
    {
      "name": "Agenda: agente + servidor + navegador",
      "keywords": ["agenda", "dev"],
      "restart": "confirm",
      "workspace": {
        "name": "agenda",
        "cwd": "~/proyectos/agenda",
        "layout": {
          "direction": "vertical",
          "split": 0.6,
          "children": [
            { "pane": { "surfaces": [{ "type": "terminal", "name": "Claude", "command": "claude", "focus": true }] } },
            {
              "direction": "horizontal",
              "children": [
                { "pane": { "surfaces": [{ "type": "terminal", "name": "Servidor", "command": "npm run dev" }] } },
                { "pane": { "surfaces": [{ "type": "browser", "url": "http://localhost:3000" }] } }
              ]
            }
          ]
        }
      }
    }
  ]
}

Guardas el fichero, pulsas ⌘⇧, (o ejecutas cmux reload-config) y el comando aparece en la paleta. La primera vez que ejecutes un comando de un cmux.json de proyecto, cmux te pedirá que confíes en él: es la protección contra repos que traen comandos que no has escrito tú.

Paleta de comandos de cmux buscando worktree, con la acción personalizada Worktree Agents que crea un worktree de Git y arranca Codex y Claude, seguida de New Terminal, New Browser, Split Right, Split Down y Open Settings con sus atajos
Captura oficial de la documentación: una acción propia, Worktree Agents, junto a las acciones de serie.

Lo de la captura es un ejemplo de la documentación oficial que merece la pena copiar: una acción que crea un worktree de Git nuevo y arranca Codex y Claude a la vez dentro de él. Si trabajas con varios agentes sobre el mismo repo, los worktrees evitan que se pisen.

🛡️ No hace falta escribir el JSON a mano. Haz clic derecho en el botón +, elige Save Workspace as Layout y cmux guarda el workspace actual (splits, directorios, agentes en marcha y pestañas de navegador) en tu cmux.json.

Domina la herramienta a fondo

cmux te avisa con hooks; sácale el resto del partido a Claude Code

Hooks, agentes, MCP y flujos con worktrees: lo que la documentación oficial no termina de explicar, en un taller práctico para que el agente que pones en cada panel trabaje mejor.

Entrar a la masterclass →

Acceso con suscripción Web Reactiva Premium · 15€/mes · Sin permanencia

¿Qué más trae cmux: SSH, Claude Code Teams y sesiones que sobreviven?

Tres funciones que no se ven el primer día pero que acabas usando: workspaces remotos por SSH, equipos de Claude Code en splits nativos y la restauración de la sesión al reabrir.

Workspaces en otra máquina con cmux ssh

cmux ssh usuario@servidor crea un workspace conectado a una máquina remota. Lee tu ~/.ssh/config, así que tus alias funcionan. Lo bueno viene después:

  • El navegador del workspace usa la red del servidor. Escribes localhost:3000 y ves el servidor de desarrollo que se ejecuta en la máquina remota, sin -L ni redirección de puertos.
  • Los avisos vuelven a casa. Si un agente llama a cmux notify en el servidor, el aviso aparece en tu barra lateral local.
  • Arrastrar y soltar sube ficheros. Arrastras una imagen al terminal remoto y cmux la sube por scp.
  • Reconexión automática. Si se cae la conexión, cmux reintenta y vuelve a enganchar la sesión. Si te mueves entre redes, puedes usar --transport mosh.

En la versión 0.65.0, Claude Code y Codex ejecutándose en un host de cmux ssh ya muestran en la barra lateral si están trabajando, esperando o parados.

Claude Code Teams sin tmux

Los agent teams de Claude Code lanzan varios agentes compañeros, y para verlos en paneles separados necesitas tmux o iTerm2 (te lo contamos en el post de Claude Code Agent Teams). cmux claude-teams lanza Claude Code con los equipos activados y cada compañero aparece como un split nativo de cmux, con sus metadatos en la barra lateral y sus avisos. Por debajo, cmux se hace pasar por tmux: Claude cree que está dentro de tmux y cmux traduce sus órdenes a splits propios. La documentación lo marca como disponible en las versiones nightly.

Cerrar cmux sin perder el día

Al salir, cmux guarda la sesión. Al volver a abrirlo recupera la disposición de ventanas, workspaces y paneles, los directorios de trabajo, el historial del terminal (en la medida de lo posible) y la URL e historial de cada navegador. Si instalaste los hooks, los agentes compatibles se reanudan con su sesión.

Lo que no hace es congelar procesos en marcha: un vim o un shell normal vuelven como terminales nuevos. Si necesitas que los procesos sigan vivos aunque cierres la app, cmux local-tmux los ejecuta dentro de un tmux gestionado por cmux.

¿Y si no uso Mac? cmux TUI en Linux y Windows

La app es solo para macOS, pero el mismo repositorio tiene cmux TUI: un multiplexor de terminal estilo tmux, escrito en Rust sobre el motor de Ghostty, que funciona en macOS, Linux y Windows. Es lo que he usado para las capturas propias de este post.

Si tienes Node.js, lo pruebas sin instalar nada:

# Abre (o crea) la sesión por defecto "main"
npx cmux

# Una sesión con nombre, que sobrevive si te desconectas
npx cmux --session agentes

La idea es la misma que en la app: workspaces en una barra lateral, paneles, pestañas de terminal y de navegador, y un estado por agente. Cambia la forma de manejarlo. Usa un prefijo como tmux, Ctrl-b, y si pulsas Ctrl-b ? ves todos los atajos:

Ventana de atajos de cmux TUI abierta con Ctrl-b interrogación: nueva pestaña Ctrl-b t, split a la derecha Ctrl-b porcentaje, split abajo Ctrl-b comillas, nuevo workspace Ctrl-b W, siguiente workspace Ctrl-b paréntesis, mostrar sidebar Ctrl-b s y moverse entre paneles con Ctrl-b y las flechas
Captura propia: Ctrl-b ? enseña todos los atajos de cmux TUI. Si vienes de tmux, la mayoría te sonarán.

Los imprescindibles: Ctrl-b % parte a la derecha, Ctrl-b " parte hacia abajo, Ctrl-b W crea un workspace, Ctrl-b ( y Ctrl-b ) te mueven entre workspaces, y Ctrl-b d te desconecta sin matar la sesión.

Para que los agentes marquen su estado en la TUI se instalan sus hooks con cmux agent hook install claude (o el proveedor que uses). Así conseguí el punto naranja de “esperando aprobación” y el azul de “terminado” que has visto en las capturas.

⚠️ La TUI está en una fase más temprana que la app. En mi prueba, la versión de npm era la 0.13.4, algún panel tardaba en ajustar su tamaño tras un split y las pestañas de navegador necesitan un proveedor de navegador local que no tenía montado. Para terminal y agentes funciona bien.

Elegir terminal, orquestador o panel de control para tus agentes ya es parte del oficio. Cada domingo seleccionamos los recursos que de verdad nos ahorran tiempo programando con IA.

Suscríbete gratis →

¿En qué se diferencia cmux de tmux, herdr o T3 Code?

cmux es un terminal: te da el sitio donde ejecutar los agentes y te avisa cuando te necesitan, pero no decide ni reparte trabajo por ti. Las otras herramientas cubren huecos parecidos desde ángulos distintos:

Herramienta Qué es Dónde funciona Avisos de agentes Navegador integrado
cmux (app) Terminal nativo con sidebar y avisos macOS Sí, con anillo y badge Sí, programable
cmux TUI Multiplexor tipo tmux macOS, Linux, Windows Sí, estado por agente Con proveedor local
tmux Multiplexor clásico Casi cualquier Unix No de serie No
herdr Multiplexor que lee el estado de cada agente Terminal Sí No
T3 Code Interfaz gráfica que controla varios agentes Escritorio, web y móvil En la app No
Agent Orchestrator Orquestador de tareas en paralelo Flujos de equipo Propios No

Mi forma de verlo:

  • Si vives en el terminal, usas Mac y quieres seguir lanzando los agentes a tu manera, cmux es el que menos te cambia el flujo y más te aporta.
  • Si estás en Linux o trabajas por SSH en servidores, cmux TUI o herdr encajan mejor.
  • Si prefieres una interfaz de chat por encima de los agentes, con móvil incluido, mira T3 Code.
  • Si lo que quieres es repartir tareas de un tracker entre agentes de forma automática, eso es un orquestador, no un terminal.

¿Qué límites tiene cmux hoy?

La app es solo para macOS, varias funciones viven todavía en las versiones nightly y cuanto más agentes lanzas, más revisión te toca. Antes de mover todo tu flujo, ten esto en cuenta:

  • Solo macOS 14 o superior. En Linux y Windows tienes la TUI, que es otra herramienta con otra madurez.
  • Funciones en nightly. El registro de actions de cmux.json y cmux claude-teams aparecen marcados así en la documentación. La versión nightly es una app aparte que convive con la estable.
  • No guarda procesos vivos. Restaura la disposición y reanuda agentes compatibles, pero un proceso cualquiera vuelve como terminal nuevo, salvo que uses cmux local-tmux.
  • El socket es poder. Cualquier proceso dentro de cmux puede escribir en otros paneles o abrir URLs. Déjalo en el modo por defecto (“solo procesos de cmux”) o apágalo si compartes máquina.
  • Ojo con la licencia del servidor. La app, el CLI y la TUI son GPL-3.0, pero la parte de servidor del repositorio (la web y algunos servicios) va con licencia BUSL-1.1. Si solo usas la app, no te afecta.

¿Para quién tiene sentido cmux?

Para developers en Mac que ya trabajan con dos o más agentes a la vez y pierden tiempo buscando cuál les necesita. Si usas un único agente en un único terminal, te aporta menos: la barra lateral y el navegador están bien, pero donde más se nota es con varios agentes en paralelo.

Donde más luce:

  • Tienes varias tareas abiertas (un bug, una feature, una revisión) y quieres cada una con su agente y su contexto a la vista.
  • Trabajas con servidores de desarrollo y quieres que el agente compruebe su trabajo en un navegador que tienes delante.
  • Entras a máquinas remotas y quieres que los avisos de los agentes de allí te lleguen aquí.
  • Te gusta automatizar tu entorno y quieres layouts y comandos por proyecto.

Mi consejo para empezar: instálalo, ejecuta cmux hooks setup, abre dos workspaces con dos tareas pequeñas de un repo que conozcas y practica ⌘⇧U. En una tarde sabes si te encaja.

TL;DR

  • 🖥️ cmux es un terminal nativo y open source (GPL-3.0) para macOS, construido sobre Ghostty, pensado para trabajar con varios agentes de IA en paralelo.
  • 🗂️ Organiza el trabajo en ventana, workspace, panel y pestaña: un workspace por tarea, con rama, PR, puertos y último aviso en la barra lateral.
  • 🔔 Con cmux hooks setup tus agentes avisan; el panel se marca, la pestaña se ilumina y ⌘⇧U te lleva al que te necesita.
  • 🌐 Trae un navegador programable en un split, CLI y socket para automatizarlo todo, y cmux.json para guardar tus layouts.
  • 🐧 Si no usas Mac, npx cmux abre cmux TUI, un multiplexor estilo tmux con estado por agente para Linux y Windows.

Preguntas frecuentes

¿Qué es cmux?

cmux es un terminal open source para macOS, basado en Ghostty, diseñado para trabajar con varios agentes de programación a la vez. Añade una barra lateral con un workspace por tarea, avisos que señalan qué panel necesita atención y un navegador integrado programable.

¿cmux es gratis?

Sí. La app de macOS, el CLI y cmux TUI se distribuyen con licencia GPL-3.0 y no cuestan nada. La parte de servidor del repositorio tiene licencia BUSL-1.1, pero no afecta a quien solo usa la app.

¿cmux funciona en Linux o Windows?

La app de escritorio solo funciona en macOS 14 o superior. Para Linux, macOS y Windows existe cmux TUI, un multiplexor de terminal estilo tmux del mismo repositorio, que puedes probar con npx cmux.

¿Cómo se instala cmux?

Descarga el .dmg desde las releases de GitHub y arrastra la app a Aplicaciones, o instálala con brew tap manaflow-ai/cmux y brew install --cask cmux. Se actualiza sola con Sparkle.

¿Qué agentes de IA funcionan con cmux?

Cualquiera que se ejecute en un terminal. Las integraciones de avisos y reanudación de sesión cubren Claude Code, Codex, Grok, OpenCode, Pi, Amp, Cursor CLI, Gemini, Rovo Dev, Copilot, CodeBuddy, Factory y Qoder.

¿Cómo hago que Claude Code me avise en cmux?

Ejecuta cmux hooks setup después de instalar el agente y activa la integración de Claude en los ajustes de cmux. Cuando Claude espere tu respuesta, su panel se marcará y su pestaña se iluminará en la barra lateral; ⌘⇧U te lleva a ella.

¿Para qué sirve el navegador integrado de cmux?

Para ver tu aplicación en un split junto al terminal y para que los agentes la manejen. Su API, portada de agent-browser, permite navegar, hacer clic, rellenar formularios, leer el árbol de accesibilidad, evaluar JavaScript y hacer capturas.

¿cmux sustituye a tmux?

En la app de macOS, para muchos flujos sí: tiene splits, pestañas, workspaces y restauración de sesión. Si necesitas procesos que sigan vivos aunque cierres la app, cmux ofrece cmux local-tmux, que usa un tmux gestionado por él.

¿cmux lee mi configuración de Ghostty?

Sí. Lee ~/.config/ghostty/config para temas, fuentes y colores. Los ajustes propios de cmux, como atajos, avisos o comandos, van en ~/.config/cmux/cmux.json.

¿Qué diferencia hay entre cmux y T3 Code?

cmux es un terminal: ejecutas los agentes como siempre y te avisa cuando te necesitan. T3 Code es una interfaz gráfica que controla varios agentes por encima, con hilos, diffs y app móvil. El primero respeta tu flujo de terminal; el segundo lo sustituye por una interfaz de chat.

Fuentes

🧨 Última oprtunidad para recibir la dinamita que mereces sobre programación con IA el próximo domingo: Suscríbete gratis a Web Reactiva en https://webreactiva.com/newsletter

Imagen de Daniel Primo
Claude, IA de Anthropic

Escrito con la ayuda de la IA generativa de Claude, fuentes fidedignas y con un human in the loop:
Dani Primo.

CEO en pantuflas de Web Reactiva. Programador y formador en tecnologías que cambian el mundo y a las personas. Activo en linkedin, en substack y canal @webreactiva en telegram

12 recursos para developers cada domingo en tu bandeja de entrada

Además de una skill práctica bien explicada, trucos para mejorar tu futuro profesional y una pizquita de humor útil para el resto de la semana. Gratis.