Skip to main content

Einleitung

laravel/multiplex ist eine Terminal-UI (TUI) für das gleichzeitige Ausführen mehrerer Kommandos. Ab Laravel 13 nutzt php artisan dev Multiplex, um den PHP-Entwicklungsserver, Queue-Worker, Log-Überwachung, Vite und andere für die lokale Entwicklung nötige Prozesse in einem einzigen Terminal zu verwalten. Für jeden Prozess steht ein eigener Tab zur Anzeige der Ausgabe bereit; die Ausgabe lässt sich durchsuchen und scrollen. Beim Beenden wird die Ausgabe der einzelnen Prozesse in den regulären Scrollback des Terminals zurückgeschrieben, sodass die Logs auch nach dem Verlassen der TUI verfügbar bleiben.

Installation und direkte Ausführung

In Laravel-Anwendungen übernimmt php artisan dev die nötige Konfiguration, weshalb Multiplex in der Regel nicht separat installiert werden muss. Für den eigenständigen Einsatz benötigen Sie Node.js 22.13 oder neuer und installieren das Paket über npm.
Kommandos werden im Format label,command übergeben.

TUI- und Inline-Modus

Sind Standard-Ein- und -Ausgabe an ein TTY gebunden, startet die tab-basierte TUI. Mit s wechseln Sie in die Stream-Anzeige, mit / durchsuchen Sie die Ausgabe und mit r starten Sie den ausgewählten Prozess neu. Mit q beenden Sie das Programm. Ohne TTY (etwa in CI oder Pipe-Verarbeitung) wechselt Multiplex automatisch in den Inline-Modus. Jede Zeile wird mit dem Prozess-Label versehen und in der Reihenfolge des Eintreffens ausgegeben. Um den Inline-Modus explizit zu erzwingen, verwenden Sie -i.
Im Inline-Modus endet die Ausführung mit dem letzten Prozess, und Fehlschläge werden in den Exit-Code übernommen. Um die Verarbeitungsergebnisse im JSON-Format zu erhalten, verwenden Sie --json.

Automatischer Neustart und Beenden

Abgestürzte Prozesse werden nach einer Sekunde Wartezeit bis zu fünfmal automatisch neu gestartet. Prozesse, die innerhalb einer Sekunde nach dem Start enden, werden nicht erneut versucht, da dies typischerweise auf eine fehlende ausführbare Datei oder einen Port-Konflikt hindeutet – der Prozess ist also von vornherein nicht startfähig. Für einmalig auszuführende Kommandos wie Builds oder Migrationen verwenden Sie --no-restart.
Beim Beenden oder Empfangen von Signalen terminiert Multiplex die Prozessgruppe der Kindprozesse. So lässt sich verhindern, dass allein der Entwicklungsserver zurückbleibt und den Port belegt – mehrere Prozesse lassen sich zusammen stoppen.

Hinweise

An die Kindprozesse wird kein Standard-Input weitergereicht. Kommandos, die Eingaben verlangen – etwa php artisan tinker oder Bestätigungsprompts bei Migrationen – lassen sich daher nicht aus Multiplex heraus ausführen. Führen Sie interaktive Kommandos in einem separaten Terminal aus. Multiplex bietet auch eine Programm-API; Kommandos werden dabei jedoch über sh -c ausgeführt. Betten Sie keine nicht vertrauenswürdigen Werte aus Konfigurationsdateien oder Requests in die Kommandozeichenkette ein.

Weiterführende Ressourcen

Zuletzt geändert am 21. August 2026