はじめに
laravel/multiplex は、複数のコマンドを同時に実行するためのターミナルUI(TUI)です。Laravel 13のphp artisan devから利用され、PHP開発サーバー、キューワーカー、ログ監視、Viteなど、ローカル開発に必要なプロセスを1つのターミナルで管理できます。
タブごとにプロセスの出力を表示でき、出力の検索とスクロールにも対応します。終了時には各プロセスの出力が通常のターミナルのスクロールバックへ書き戻されるため、TUIを終了した後もログを確認できます。
インストールと直接実行
Laravelアプリケーションではphp artisan devが必要な設定を行うため、通常はMultiplexを直接インストールする必要はありません。単独で使う場合は、Node.js 22.13以降を用意してnpmでインストールします。
label,command形式で渡します。
TUIとインラインモード
標準入力と標準出力がTTYの場合はタブ形式のTUIが起動します。sでストリーム表示に切り替え、/で出力を検索し、rで選択中のプロセスを再起動できます。qで終了します。
TTYがないCIやパイプ処理では、インラインモードに自動的に切り替わります。各行にプロセスのラベルが付き、出力が到着した順に表示されます。明示的にインラインモードを使う場合は-iを指定します。
--jsonを使います。
自動再起動と終了処理
クラッシュしたプロセスは1秒待ってから最大5回まで自動的に再起動されます。起動から1秒以内に終了したプロセスは、実行ファイルの不足やポート競合など、最初から起動できていない可能性があるため再試行されません。ビルドやマイグレーションのような一度だけ実行するコマンドでは--no-restartを指定します。
注意点
子プロセスには標準入力が渡されません。そのため、php artisan tinkerやマイグレーションの確認プロンプトなど、入力を要求するコマンドはMultiplexから実行できません。対話的なコマンドは別のターミナルで実行してください。
MultiplexのプログラムAPIも提供されていますが、コマンドはsh -cで実行されます。設定ファイルやリクエストなど、信頼できない値をコマンド文字列に埋め込まないでください。