Laravel artisan dev Terminal UI in Laravel 13.25 | Mohamed Said        [  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png)   Mohamed Said Laravel Backend Engineer  ](https://msaied.com) [ Home ](https://msaied.com) [ Projects ](https://msaied.com/projects) [ Articles  ](https://msaied.com/articles) [ Certificates ](https://msaied.com/certificates) [ Contact ](https://msaied.com#contact-section) 

       [  ](https://github.com/EG-Mohamed)       

 [ Home ](https://msaied.com) [ Projects ](https://msaied.com/projects) [ Articles ](https://msaied.com/articles) [ Certificates ](https://msaied.com/certificates) [ Contact ](https://msaied.com#contact-section) 

  [ home ](https://msaied.com)    [ articles ](https://msaied.com/articles)    Laravel Terminal UI for the artisan dev Command (Laravel 13.25)        On this page       1. [  What Changed in Laravel 13.25 ](#what-changed-in-laravel-1325)
2. [  Three Display Modes ](#three-display-modes)
3. [  Setting Project-Wide Defaults ](#setting-project-wide-defaults)
4. [  Auto-Restart Behavior ](#auto-restart-behavior)
5. [  Platform Requirements and the JSON Flag ](#platform-requirements-and-the-json-flag)
6. [  The SERVER\_HOST Fix ](#the-server-host-fix)
7. [  Key Takeaways ](#key-takeaways)

  ![Laravel Terminal UI for the artisan dev Command (Laravel 13.25)](https://cdn.msaied.com/541/5c4a4e54f6d67e80c03777985713ff65.png)

 [  Laravel ](https://msaied.com/articles?category=laravel)  #Laravel   #Artisan   #Terminal UI   #Laravel 13.25   #Developer Tools  

 Laravel Terminal UI for the artisan dev Command (Laravel 13.25) 
=================================================================

     11 Aug 2026      4 min read    ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said  

       Table of contents

1. [  01   What Changed in Laravel 13.25  ](#what-changed-in-laravel-1325)
2. [  02   Three Display Modes  ](#three-display-modes)
3. [  03   Setting Project-Wide Defaults  ](#setting-project-wide-defaults)
4. [  04   Auto-Restart Behavior  ](#auto-restart-behavior)
5. [  05   Platform Requirements and the JSON Flag  ](#platform-requirements-and-the-json-flag)
6. [  06   The SERVER\_HOST Fix  ](#the-server-host-fix)
7. [  07   Key Takeaways  ](#key-takeaways)

 What Changed in Laravel 13.25
-----------------------------

Running `php artisan dev` spins up four processes at once: the development server, a queue worker, Pail, and Vite. Before Laravel 13.25, all four wrote to the same terminal stream via `concurrently`, making it easy to lose a stack trace in a wall of Vite rebuild output.

Laravel 13.25 replaces `concurrently` with [@laravel/multiplex](https://www.npmjs.com/package/@laravel/multiplex), a purpose-built terminal UI that keeps every process in its own lane. No installation, no configuration — just run:

```bash
php artisan dev

```

Three Display Modes
-------------------

**Tabs** (default) gives each process its own tab. You read one process at a time, can restart or clear logs per-tab, and a crashed process restarts automatically without taking the others down.

**Stream** is the classic interleaved view, but now scrollable and searchable instead of relying on your terminal's scrollback buffer.

**Inline** emits plain output with no UI. It activates automatically when there is no TTY, making it the right choice for containers, CI pipelines, and process supervisors.

Select a mode for a single run with a flag or its short form:

```bash
php artisan dev --tabs      # -t
php artisan dev --stream    # -s
php artisan dev --inline    # -i

```

You can also toggle between tabs and stream while the UI is running. Add timestamps to any mode:

```bash
php artisan dev --timestamps

```

When you quit, everything buffered is printed to the terminal in stream style — no output is lost.

Setting Project-Wide Defaults
-----------------------------

Per-run flags are for one-offs. Lock in defaults for the whole team in a service provider:

```php
namespace App\Providers;

use Illuminate\Foundation\DevCommands;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        if (! $this->app->environment('local')) {
            return;
        }

        DevCommands::stream();
        DevCommands::withTimestamps();
    }
}

```

The full set of configuration methods:

| Method | Effect | |---|---| | `DevCommands::tabs()` | One tab per process (default) | | `DevCommands::stream()` | Interleaved scrollable feed | | `DevCommands::inline()` | Plain output, no UI | | `DevCommands::withTimestamps()` | Prefix every line with a timestamp | | `DevCommands::disableAutoRestart()` | Leave crashed processes dead | | `DevCommands::bufferSize(5000)` | Lines kept per process in tabs mode | | `DevCommands::streamBufferSize(10000)` | Total lines kept in stream mode |

Command-line flags always win over provider settings, so `--tabs` overrides `DevCommands::stream()` for that run.

Auto-Restart Behavior
---------------------

Previously, `artisan dev` passed `--kill-others-on-fail` to `concurrently`, meaning one dying process killed the entire stack. The new default restarts only the crashed process. Fix the file and the process comes back on its own.

To revert to fail-fast behavior for a single run:

```bash
php artisan dev --no-restart

```

Or permanently with `DevCommands::disableAutoRestart()`.

Platform Requirements and the JSON Flag
---------------------------------------

The multiplex terminal UI runs on **macOS and Linux only**. Windows continues to use `concurrently`; the mode and buffer methods are no-ops there, though `--timestamps` and `--no-restart` are translated to equivalent `concurrently` flags.

Node v22.13 or later is required. The framework pins `@laravel/multiplex` to a specific minor version and runs it through your project's package manager (`pnpm dlx` or `npx`) — nothing to add to `package.json`.

For tooling integrations, a structured output flag is available:

```bash
php artisan dev --json

```

This emits newline-delimited JSON events (implying `--inline`) and is intended for editor extensions or dashboards that consume structured process output.

The SERVER\_HOST Fix
--------------------

A related fix in the same release corrects `SERVER_HOST` being ignored. The default `server` process was registered as `serve --host=localhost`, which overrode the environment variable. It is now registered as plain `serve`, so this works again:

```bash
SERVER_HOST=0.0.0.0 php artisan dev

```

Key Takeaways
-------------

- `@laravel/multiplex` replaces `concurrently` in Laravel 13.25 with no setup required
- Three modes: tabs (default), stream, and inline (auto-selected without a TTY)
- Crashed processes restart automatically; use `--no-restart` to disable
- Project-wide defaults live in a service provider via `DevCommands` methods
- Buffer sizes are configurable to prevent chatty processes from pushing out other logs
- macOS/Linux only for the TUI; Windows keeps using `concurrently`
- `SERVER_HOST` environment variable now works correctly again

---

*Source: [Laravel Terminal UI for the artisan dev Command — Laravel News](https://laravel-news.com/artisan-dev-terminal-ui)*

 Found this useful?

          [  ](https://twitter.com/intent/tweet?url=https%3A%2F%2Fmsaied.com%2Farticles%2Flaravel-terminal-ui-for-the-artisan-dev-command-laravel-1325&text=Laravel+Terminal+UI+for+the+artisan+dev+Command+%28Laravel+13.25%29) [  ](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fmsaied.com%2Farticles%2Flaravel-terminal-ui-for-the-artisan-dev-command-laravel-1325) 

 Frequently Asked Questions 
----------------------------

  3 questions  

     Q01  Does the new artisan dev terminal UI require any additional installation?        No. Laravel 13.25 bundles @laravel/multiplex and runs it through your project's existing package manager (npx or pnpm dlx). You do not need to add anything to package.json or run any install command. 

      Q02  What happens to artisan dev on Windows after the Laravel 13.25 update?        Windows continues to use concurrently. The mode-selection methods (tabs, stream, inline) and buffer-size methods are no-ops on Windows, but --timestamps and --no-restart are translated to equivalent concurrently flags and work on all platforms. 

      Q03  How do I stop a crashed process from automatically restarting in artisan dev?        Pass --no-restart for a single run: php artisan dev --no-restart. To disable auto-restart permanently for the project, call DevCommands::disableAutoRestart() in the boot method of a service provider. 

  Continue reading

 More Articles 
---------------

 [ View all    ](https://msaied.com/articles) 

 [ ![Laravel AI SDK v0.10: 4 New Features Explained](https://cdn.msaied.com/540/e74363f048913d3782bc16a7292215db.png) Laravel AI SDK AI Agents Filesystem Tools 

### Laravel AI SDK v0.10: 4 New Features Explained

Laravel AI SDK v0.10 ships with filesystem tools for agents, human tool approval, and more. This walkthrough c...

  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said 

 12 Aug 2026     3 min read  

  Read    

 ](https://msaied.com/articles/laravel-ai-sdk-v010-4-new-features-explained) [ ![NightOwl: Laravel Monitoring With Flat Pricing and Your Own PostgreSQL Storage](https://cdn.msaied.com/538/60582948c0339b19e872f4f3c03171f2.png) Laravel Monitoring PostgreSQL 

### NightOwl: Laravel Monitoring With Flat Pricing and Your Own PostgreSQL Storage

NightOwl redirects Laravel Nightwatch telemetry into a PostgreSQL database you own, replacing per-event billin...

  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said 

 11 Aug 2026     3 min read  

  Read    

 ](https://msaied.com/articles/nightowl-laravel-monitoring-with-flat-pricing-and-your-own-postgresql-storage) [ ![Mock PHP Classes in Tests With the Double Library](https://cdn.msaied.com/537/be45e68dffd72aa9bd833c2f409fcb07.png) testing mocking phpunit 

### Mock PHP Classes in Tests With the Double Library

Double is a PHP 8.3 test double library by Jason McCreary that replaces mocks, spies, and partials with a sing...

  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said 

 11 Aug 2026     4 min read  

  Read    

 ](https://msaied.com/articles/mock-php-classes-in-tests-with-the-double-library) 

   [  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png)   Mohamed Said Laravel Backend Engineer  ](https://msaied.com)Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

Explore

- [Home](https://msaied.com)
- [Projects](https://msaied.com/projects)
- [Articles](https://msaied.com/articles)
- [Certificates](https://msaied.com/certificates)
- [Contact](https://msaied.com#contact-section)

Connect

- [   hello@msaied.com ](mailto:hello@msaied.com)
- [   +20 109 461 9204 ](tel:+201094619204)

© 2026 Mohamed Said. All rights reserved.

 [  ](https://github.com/EG-Mohamed) [  ](https://www.linkedin.com/in/msaiedm/) [  ](https://wa.me/201094619204) [  ](mailto:hello@msaied.com) [  ](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)
