Laravel artisan dev Command: Server, Queue, Logs &amp; Vite | Mohamed Said       [Skip to content](#main)  [ ![](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png) Mohamed SaidLaravel Backend Engineer ](https://www.msaied.com/public) - [Home](https://www.msaied.com/public)
- [Projects](https://www.msaied.com/public/projects)
- [Articles](https://www.msaied.com/public/articles)
- [Certificates](https://www.msaied.com/public/certificates)
- [About](https://www.msaied.com/public#about)

           [  Contact](https://www.msaied.com/public#contact) Menu 

Menu
----

Close 

 - [HomeStart here](https://www.msaied.com/public)
- [ProjectsCase studies](https://www.msaied.com/public/projects)
- [ArticlesEngineering notes](https://www.msaied.com/public/articles)
- [CertificatesCredentials](https://www.msaied.com/public/certificates)
- [AboutHow I work](https://www.msaied.com/public#about)
- [ContactGet in touch](https://www.msaied.com/public#contact)

  [Start a conversation](https://www.msaied.com/public#contact) [WhatsApp](https://wa.me/201094619204) [Email](mailto:hello@msaied.com) 

 1. [Home](https://www.msaied.com/public)
2. /
3. [Articles](https://www.msaied.com/public/articles)
4. /
5. [Laravel](https://www.msaied.com/public/articles?category=laravel)
6. /
7. Laravel artisan dev: Run Server, Queue, Logs, and Vite in One Command

   [Laravel](https://www.msaied.com/public/articles?category=laravel) 

 Laravel artisan dev: Run Server, Queue, Logs, and Vite in One Command
======================================================================

 Laravel 13.16 introduced a first-party `php artisan dev` command that replaces the old Composer script, running your dev server, queue worker, Pail log tail, and Vite in a single terminal.

 ![](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp) [Mohamed Said](https://www.msaied.com/public#person) Published 10 Aug 2026 · Updated 10 Aug 2026 · 3 min read

ShareCopy linkCopied

 ![Laravel artisan dev: Run Server, Queue, Logs, and Vite in One Command](https://cdn.msaied.com/533/88ab98460b08aed42d6688eaa02a9620.png) 

  On this page +1. [What Is php artisan dev?](#what-is-codephp-artisan-devcode)
2. [Default Processes](#default-processes)
3. [Registering Custom Processes](#registering-custom-processes)
4. [Registration Methods](#registration-methods)
5. [Replacing a Default](#replacing-a-default)
6. [Inspecting and Filtering the Process List](#inspecting-and-filtering-the-process-list)
7. [Key Takeaways](#key-takeaways)

 What Is `php artisan dev`?
--------------------------

Laravel 13.16 shipped a first-party `artisan dev` command that consolidates everything you need during local development into a single terminal session. Before this, the application skeleton wired things together with a `dev` script in `composer.json` that piped four commands through `npx concurrently`. That script still exists, but it now does nothing except delegate to the new command:

```bash
php artisan dev

```

Under the hood the command still shells out to `concurrently`, and since Laravel 13.18 it passes `--kill-others-on-fail`, so one crashing process brings down the rest instead of leaving you with a half-running stack.

Default Processes
-----------------

Out of the box, `artisan dev` starts four processes:

| Name | Command | |---|---| | server | `php artisan serve --host=localhost` | | queue | `php artisan queue:listen --tries=1 --timeout=0` | | logs | `php artisan pail --timeout=0` | | vite | `npm run dev` |

The `logs` process relies on `pcntl_fork`, so it is skipped on Windows. The `vite` process automatically detects your lockfile and uses the correct package manager—`pnpm run dev` in a pnpm project, `yarn run dev` in a Yarn project, and so on—without any configuration.

Registering Custom Processes
----------------------------

The real power comes from the `DevCommands` class, which lets you replace or extend the defaults from your `AppServiceProvider`:

```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;
        }

        // Replace the default queue worker with Horizon
        DevCommands::artisan('horizon', 'queue');

        // Start Laravel Reverb in debug mode
        DevCommands::artisan('reverb:start --debug', 'reverb')->purple();

        // Forward Stripe webhooks via the Stripe CLI
        DevCommands::register(
            'stripe listen --forward-to '.config('app.url').'/stripe/webhook',
            'stripe'
        )->orange();

        // TypeScript type-checking in watch mode
        DevCommands::nodeExec('tsc --noEmit --watch --preserveWatchOutput', 'types')->yellow();
    }
}

```

### Registration Methods

- **`artisan()`** — prefixes the command with `php artisan`.
- **`node()`** — prefixes with the detected package manager's run command.
- **`nodeExec()`** — uses the exec variant (`npx`, `pnpx`, etc.).
- **`register()`** — accepts a raw shell command for anything else.

### Replacing a Default

Process names are identities. Registering a process with the name `queue` replaces the default `queue:listen` worker. The same pattern overrides any built-in:

```php
DevCommands::artisan('serve --host=localhost --port=9000', 'server');

```

Application-registered processes always outrank framework defaults, which in turn outrank anything registered from `vendor`.

Inspecting and Filtering the Process List
-----------------------------------------

Added in Laravel 13.17, `php artisan dev:list` prints every registered process, its command, and the file and line it was registered from—without starting anything.

You can also limit which processes run at start-up:

```php
// Only start the server and Vite
DevCommands::only('server', 'vite');

// Start everything except the queue worker
DevCommands::except('queue');

```

These are runtime filters, not deletions, so the excluded process still appears in `dev:list` and can be restored by removing one line.

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

- `php artisan dev` is available from Laravel 13.16 and replaces the Composer `dev` script.
- Four processes run by default: dev server, queue worker, Pail log tail, and Vite.
- Vite auto-detects npm, pnpm, Yarn, or Bun from your lockfile.
- Custom processes are registered via `DevCommands` in `AppServiceProvider`.
- Reusing a process name (e.g. `queue`) replaces the framework default.
- `php artisan dev:list` (13.17+) shows every registered process and its source location.
- `--kill-others-on-fail` (13.18+) ensures a single crash stops the entire stack cleanly.

---

*Source: [Laravel artisan dev: Run Server, Queue, Logs, and Vite — Laravel News](https://laravel-news.com/artisan-dev-command)*

- [Laravel](https://www.msaied.com/public/articles?search=Laravel)
- [Artisan](https://www.msaied.com/public/articles?search=Artisan)
- [Laravel 13](https://www.msaied.com/public/articles?search=Laravel%2013)
- [DevCommands](https://www.msaied.com/public/articles?search=DevCommands)
- [Vite](https://www.msaied.com/public/articles?search=Vite)
- [Queue](https://www.msaied.com/public/articles?search=Queue)

 Frequently asked questions 
---------------------------

  How do I replace the default queue worker with Laravel Horizon in `artisan dev`?Register a process named `queue` in your `AppServiceProvider` using `DevCommands::artisan('horizon', 'queue')`. Because process names act as identities, this replaces the built-in `queue:listen` process with Horizon.

   Does `php artisan dev` work on Windows?Mostly yes. The `logs` process (Laravel Pail) requires `pcntl\_fork`, which is unavailable on Windows, so it is skipped automatically. The server, queue, and Vite processes still run.

   How can I see all registered dev processes without starting them?Run `php artisan dev:list`, introduced in Laravel 13.17. It prints each process name, its command, and the file and line number where it was registered.

   ![Mohamed Said](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp)About the author
----------------

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

[About](https://www.msaied.com/public#about) [GitHub ↗](https://github.com/EG-Mohamed) [LinkedIn ↗](https://www.linkedin.com/in/msaiedm/) [WhatsApp ↗](https://wa.me/201094619204) [Email Address ↗](mailto:hello@msaied.com) [My CV ↗](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)  

   [Previous articlePostgreSQL JSONB in Laravel: Indexing, Querying, and Casting Without the Pain](https://www.msaied.com/public/articles/postgresql-jsonb-in-laravel-indexing-querying-and-casting-without-the-pain-1) [Next articleLivewire v3.8.4 Released: Octane Memory Leak Fix and Fetch Redirect Handling](https://www.msaied.com/public/articles/livewire-v384-released-octane-memory-leak-fix-and-fetch-redirect-handling)  

   On this page
-------------

1. [What Is php artisan dev?](#what-is-codephp-artisan-devcode)
2. [Default Processes](#default-processes)
3. [Registering Custom Processes](#registering-custom-processes)
4. [Registration Methods](#registration-methods)
5. [Replacing a Default](#replacing-a-default)
6. [Inspecting and Filtering the Process List](#inspecting-and-filtering-the-process-list)
7. [Key Takeaways](#key-takeaways)

 ###  Have a technical challenge?

 Tell me what you’re building. I reply within two working days.

[Start a conversation](https://www.msaied.com/public#contact) 

   Related articles
-----------------

 [ ![](https://cdn.msaied.com/743/8998fac3a41451ab3fe1588194e17a43.png) Filament · 3 min read### Securing Filament Plugins with Plumb: Automated Security Scoring for PHP Packages

5 Oct 2026 ](https://www.msaied.com/public/articles/securing-filament-plugins-with-plumb-automated-security-scoring-for-php-packages) [ ![](https://cdn.msaied.com/742/2d02018669cdeedccb5de2efb898f0ee.png) Filament · 3 min read### Filament v3.3.56 Released: File Hash Names and Livewire Upload Fix

5 Oct 2026 ](https://www.msaied.com/public/articles/filament-v3356-released-file-hash-names-and-livewire-upload-fix) [ ![](https://cdn.msaied.com/741/5b55c123ad08e4d34e1f4b99ad6a428b.png)  · 3 min read### Filament v4 Schema-Based Forms, Infolists, and the Unified Schema API

5 Oct 2026 ](https://www.msaied.com/public/articles/filament-v4-schema-based-forms-infolists-and-the-unified-schema-api-5) 

  Have a technical challenge?
----------------------------

Tell me what you’re building. I reply within two working days.

 [Discuss your project ↗](https://www.msaied.com/public#contact) 

  © 2026 Mohamed Said · Built with Laravel, meant to last.Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

 - [Home](https://www.msaied.com/public)
- [Articles](https://www.msaied.com/public/articles)
- [Certificates](https://www.msaied.com/public/certificates)
- [GitHub](https://github.com/EG-Mohamed)
- [LinkedIn](https://www.linkedin.com/in/msaiedm/)
- [WhatsApp](https://wa.me/201094619204)
- [Email Address](mailto:hello@msaied.com)
- [My CV](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)
- [Sitemap](https://www.msaied.com/public/sitemap.xml)
