<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/laravel-artisan-dev-run-server-queue-logs-and-vite-pcfbfyyfr" -->

---
title: Laravel artisan dev: Run Server, Queue, Logs, and Vite
description: Laravel 13.16 introduced the `php artisan dev` command, replacing the old `composer dev` script that relied on `npx concurrently`. It runs four default...
canonical: https://daily.dev/posts/laravel-artisan-dev-run-server-queue-logs-and-vite-pcfbfyyfr
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Laravel artisan dev: Run Server, Queue, Logs, and Vite | daily.dev
og:description: Laravel 13.16 introduced the `php artisan dev` command, replacing the old `composer dev` script that relied on `npx concurrently`. It runs four default...
og:url: https://daily.dev/posts/laravel-artisan-dev-run-server-queue-logs-and-vite-pcfbfyyfr
og:image: https://api.daily.dev/og/posts/PcfbFYyfR.png
og:image:alt: Laravel artisan dev: Run Server, Queue, Logs, and Vite
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Laravel artisan dev: Run Server, Queue, Logs, and Vite

**[Laravel News](https://daily.dev/sources/ln)** · 4 min read · 27 upvotes · 2 comments

## Summary

Laravel 13.16 introduced the `php artisan dev` command, replacing the old `composer dev` script that relied on `npx concurrently`. It runs four default processes out of the box: a development server, queue worker (via `queue:listen`), log output (via Pail), and Vite. The package manager for Vite is auto-detected from the lockfile. Since 13.18, `--kill-others-on-fail` is passed so a crashed process stops the whole stack. Developers can register custom processes using `DevCommands::artisan()`, `DevCommands::register()`, `DevCommands::node()`, or `DevCommands::nodeExec()` inside `AppServiceProvider::boot()`. Registering a process with the same name as a default replaces it — for example, registering a process named `queue` swaps in Horizon. Application-registered processes always outrank framework defaults, which outrank vendor-registered ones. The `php artisan dev:list` command (added in 13.17) shows all registered processes and their source locations. Filtering with `DevCommands::only()` or `DevCommands::except()` lets you run a subset without removing registrations.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://laravel-news.com/artisan-dev-command>

## Questions this post answers

### What does the php artisan dev command do in Laravel 13.16?

It runs the development server, a queue worker, log output via Pail, and Vite together as one command, replacing the old composer.json dev script that piped four commands through npx concurrently. The process list now lives in PHP via the DevCommands class instead of composer.json, and the composer dev script now simply calls php artisan dev.

_Track Laravel release changes like this on daily.dev to keep local dev workflows current._

### How do I register a custom process like Laravel Horizon or the Stripe CLI with artisan dev?

Register it in the boot method of AppServiceProvider using DevCommands methods: artisan() prefixes with php artisan, node() uses the detected package manager's run command, nodeExec() uses npx-style exec commands, and register() accepts a raw shell command. Naming a process 'queue' replaces the default queue:listen worker, for example with Horizon.

_Developers customizing Laravel dev environments can follow setups like this via daily.dev._

### How do I see which processes are registered for php artisan dev without running them?

Run php artisan dev:list, added in Laravel 13.17, which prints each registered process along with its command and the file and line where it was registered. This helps identify processes added by a package's setup instructions that may otherwise be forgotten. You can also filter execution with DevCommands::only() or DevCommands::except() without deleting registrations.

_Follow Laravel tooling updates like dev:list on daily.dev to keep configs traceable._

## Community discussion

Top comments from developers on daily.dev.

**@taiwofrancis** · 0 upvotes

> Finally, fewer commands to remember when starting a Laravel project. 😅

**@agustinbarrientos** · 0 upvotes

> Can `artisan dev` show which package registered each process? That'd save a lot of digging when a default gets overridden.

## Similar posts on daily.dev

- [The artisan dev Command in Laravel 13.16.0](https://daily.dev/posts/the-artisan-dev-command-in-laravel-13-16-0-rxo2woyat) · Laravel News · 38 upvotes · 2 comments
- [Laravel \+ Vite: Why Laravel Switched from Laravel Mix and How Vite Makes Development Faster](https://daily.dev/posts/laravel-vite-why-laravel-switched-from-laravel-mix-and-how-vite-makes-development-faster-20xqtcqsm) · Medium · 1 upvotes · 0 comments
- [Laravel Extended Commands](https://daily.dev/posts/laravel-extended-commands-eksznaprk) · Laravel News · 39 upvotes · 1 comments

---

Tags: [#php](https://daily.dev/tags/php), [#laravel](https://daily.dev/tags/laravel), [#vite](https://daily.dev/tags/vite)

[View this post on daily.dev](https://daily.dev/posts/laravel-artisan-dev-run-server-queue-logs-and-vite-pcfbfyyfr)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Laravel artisan dev: Run Server, Queue, Logs, and Vite","url":"https://daily.dev/posts/laravel-artisan-dev-run-server-queue-logs-and-vite-pcfbfyyfr","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/laravel-artisan-dev-run-server-queue-logs-and-vite-pcfbfyyfr"},"datePublished":"2026-08-10T13:45:05.515Z","dateModified":"2026-09-13T19:18:52.701Z","description":"Laravel 13.16 introduced the `php artisan dev` command, replacing the old `composer dev` script that relied on `npx concurrently`. It runs four default...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/ae9edcabc8366f1f6526570dd48fbf84?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/ae9edcabc8366f1f6526570dd48fbf84?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Laravel News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Laravel News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/ln","url":"https://daily.dev/sources/ln"},"commentCount":2,"discussionUrl":"https://daily.dev/posts/laravel-artisan-dev-run-server-queue-logs-and-vite-pcfbfyyfr","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":27},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":2}],"keywords":"php,laravel,vite","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Laravel News","item":"https://daily.dev/sources/ln"},{"@type":"ListItem","position":3,"name":"Laravel artisan dev: Run Server, Queue, Logs, and Vite"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/laravel-artisan-dev-run-server-queue-logs-and-vite-pcfbfyyfr","comment":[{"@type":"Comment","text":"Finally, fewer commands to remember when starting a Laravel project. 😅","datePublished":"2026-08-12T10:54:15.434Z","url":"https://daily.dev/posts/PcfbFYyfR#c-QDYHFGdRg","author":{"@type":"Person","name":"Taiwo Francis Oguntade","url":"https://daily.dev/taiwofrancis","image":"https://media.daily.dev/image/upload/s--px3_Pvo4--/f_auto/v1785515368/avatars/avatar_FStpm3ZejUD3qGlEeoOUS?_a=BAMAMicg0"}},{"@type":"Comment","text":"Can artisan dev show which package registered each process? That’d save a lot of digging when a default gets overridden.","datePublished":"2026-08-15T15:39:34.828Z","url":"https://daily.dev/posts/PcfbFYyfR#c-HltAGEFa4","author":{"@type":"Person","name":"Agustin Barrientos","url":"https://daily.dev/agustinbarrientos","image":"https://media.daily.dev/image/upload/s--5ayxQnqn--/f_auto/v1788281802/avatars/avatar_wQYYVe5Tbj0NJ7C7qPoa8?_a=BAMAMicg0"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/laravel-artisan-dev-run-server-queue-logs-and-vite-pcfbfyyfr#faq","mainEntity":[{"@type":"Question","name":"What does the php artisan dev command do in Laravel 13.16?","acceptedAnswer":{"@type":"Answer","text":"It runs the development server, a queue worker, log output via Pail, and Vite together as one command, replacing the old composer.json dev script that piped four commands through npx concurrently. The process list now lives in PHP via the DevCommands class instead of composer.json, and the composer dev script now simply calls php artisan dev. Track Laravel release changes like this on daily.dev to keep local dev workflows current."}},{"@type":"Question","name":"How do I register a custom process like Laravel Horizon or the Stripe CLI with artisan dev?","acceptedAnswer":{"@type":"Answer","text":"Register it in the boot method of AppServiceProvider using DevCommands methods: artisan() prefixes with php artisan, node() uses the detected package manager's run command, nodeExec() uses npx-style exec commands, and register() accepts a raw shell command. Naming a process 'queue' replaces the default queue:listen worker, for example with Horizon. Developers customizing Laravel dev environments can follow setups like this via daily.dev."}},{"@type":"Question","name":"How do I see which processes are registered for php artisan dev without running them?","acceptedAnswer":{"@type":"Answer","text":"Run php artisan dev:list, added in Laravel 13.17, which prints each registered process along with its command and the file and line where it was registered. This helps identify processes added by a package's setup instructions that may otherwise be forgotten. You can also filter execution with DevCommands::only() or DevCommands::except() without deleting registrations. Follow Laravel tooling updates like dev:list on daily.dev to keep configs traceable."}}]}
```

