Lancement de cmux sur Show HN
Nous avons publié cmux sur Show HN le 19 février :
Je lance beaucoup de sessions Claude Code et Codex en parallèle. J'utilisais Ghostty avec plusieurs panneaux divisés, et je comptais sur les notifications macOS natives pour savoir quand un agent avait besoin de moi. Mais le corps de la notification de Claude Code dit toujours juste « Claude is waiting for your input » sans contexte, et avec assez d'onglets ouverts, je ne pouvais même plus lire les titres.
J'ai essayé quelques orchestrateurs de code mais la plupart étaient des apps Electron/Tauri et les performances me gênaient. Je préfère aussi simplement le terminal puisque les orchestrateurs GUI vous enferment dans leur workflow. J'ai donc construit cmux comme une application macOS native en Swift/AppKit. Il utilise libghostty pour le rendu du terminal et lit votre configuration Ghostty existante pour les thèmes, polices, couleurs et plus.
Les principaux ajouts sont la barre latérale et le système de notifications. La barre latérale a des onglets verticaux qui affichent la branche git, le répertoire de travail, les ports en écoute et le dernier texte de notification pour chaque espace de travail. Le système de notifications capte les séquences du terminal (OSC 9/99/777) et dispose d'un CLI (cmux notify) que vous pouvez connecter aux hooks d'agents pour Claude Code, OpenCode, etc. Quand un agent attend, son panneau reçoit un anneau bleu et l'onglet s'allume dans la barre latérale, pour que je puisse voir lequel a besoin de moi parmi les divisions et les onglets. Cmd+Shift+U saute au plus récent non lu.
Le navigateur intégré a une API scriptable. Les agents peuvent capturer l'arbre d'accessibilité, obtenir des références d'éléments, cliquer, remplir des formulaires, exécuter du JS et lire les logs de la console. Vous pouvez diviser un panneau navigateur à côté de votre terminal et faire interagir Claude Code directement avec votre serveur de développement.
Tout est scriptable via le CLI et l'API socket : créer des espaces de travail/onglets, diviser des panneaux, envoyer des frappes, ouvrir des URLs dans le navigateur.
Au pic, il a atteint la 2e place sur Hacker News. Mitchell Hashimoto l'a partagé :
Mon commentaire préféré du fil HN :
Hey, this looks seriously awesome. Love the ideas here, specifically: the programmability (I haven't tried it yet, but had been considering learning tmux partly for this), layered UI, browser w/ api. Looking forward to giving this a spin. Also want to add that I really appreciate Mitchell Hashimoto creating libghostty; it feels like an exciting time to be a terminal user.
Some feedback (since you were asking for it elsewhere in the thread!):
- It's not obvious/easy to open browser dev tools (cmd-alt-i didn't work), and when I did find it (right click page → inspect element) none of the controls were visible but I could see stuff happening when I moved my mouse over the panel
- Would be cool to borrow more of ghostty's behavior:
- hotkey overrides
- command palette (cmd-shift-p)
- cmd-z to "zoom in" to a pane
Étonnamment, cmux est devenu viral au Japon :
Traduction : « Ça a l'air bien. Une application terminal basée sur Ghostty conçue pour ne pas se perdre quand on exécute plusieurs CLI comme Claude Code en parallèle. Le panneau en attente d'input reçoit un cadre bleu, et il a son propre système de notifications. »
Et semi-viral en Chine :
Une autre chose enthousiasmante a été de voir des gens construire par-dessus le CLI cmux. sasha a créé une extension pi-cmux qui affiche les infos du modèle, l'utilisation des tokens et l'état de l'agent dans la barre latérale :
Tout dans cmux est scriptable via le CLI : créer des espaces de travail, envoyer des frappes, contrôler le navigateur, lire les notifications. La philosophie de cmux est d'être programmable et composable, pour que les gens puissent personnaliser leur façon de travailler avec les agents de code. L'état de l'art des agents de code évolue rapidement, et vous ne voulez pas être enfermé dans un orchestrateur GUI rigide qui ne peut pas suivre.
Si vous exécutez plusieurs agents de code, essayez cmux.
