| Install | |
|---|---|
composer require soloterm/solo |
[!IMPORTANT] This package requires ext-pcntl, so it will not work on Windows. Sorry about that. If you know how to fix that, let me know!
Solo for Laravel is a package to run multiple commands at once, to aid in local development. All the commands needed to run your application live behind a single artisan command:
php artisan solo
Each command runs in its own tab in Solo. Use the left/right arrow keys to navigate between tabs and enjoy a powerful, unified development environment.

composer require soloterm/solo --dev
php artisan solo:install
This will publish the configuration file to config/solo.php.
Solo is entirely config-driven through config/solo.php. Here's a quick overview of what you can configure:
Define your commands in the commands array:
'commands' => [
'About' => 'php artisan solo:about',
'Logs' => 'tail -f -n 100 ' . storage_path('logs/laravel.log'),
'Vite' => 'npm run dev',
'Make' => new MakeCommand,
// Lazy commands don't start automatically
'Dumps' => Command::from('php artisan solo:dumps')->lazy(),
'Queue' => Command::from('php artisan queue:work')->lazy(),
'Tests' => TestCommand::artisan(),
],
You can define commands in several ways:
'commands' => [
// A simple string
'About' => 'php artisan solo:about',
// A custom Command class
'Make' => new MakeCommand,
// Using the Command::from() static constructor
'Dumps' => Command::from('php artisan solo:dumps')->lazy(),
],
A simple string command is the easiest way, but if you need more control you're free to create your own custom class.
If you want to define a command that does not start automatically, you can append lazy() to a Command instance:
// You might need Reverb, but maybe not always, so don't autostart it.
'Reverb' => Command::from('php artisan reverb')->lazy()
Solo ships with both light and dark themes. Configure your preference in config/solo.php:
'theme' => env('SOLO_THEME', 'dark'),
'themes' => [
'light' => Themes\LightTheme::class,
'dark' => Themes\DarkTheme::class,
],
You can define your own theme if you'd like. It's probably easiest to subclass one of the existing themes.
Choose between default and vim-style keybindings:
'keybinding' => env('SOLO_KEYBINDING', 'default'),
'keybindings' => [
'default' => Hotkeys\DefaultHotkeys::class,
'vim' => Hotkeys\VimHotkeys::class,
],
Again, you're welcome to define and register your own keybidings.
Start Solo with:
php artisan solo
Note these are the default bindings. They will be slightly different if you use the Vim bindings.
Navigation:
Command Controls:
Interactive Mode:
Global:
Solo ships with a special php artisan solo:make command that proxies to all of the underlying php artisan make:*
commands. It serves as a universal entry point to Laravel's make commands.
It lives in a custom MakeCommand class.
'Make' => new MakeCommand,
The TestCommand provides a safe way to run tests that automatically sets APP_ENV=testing. This ensures your tests run in the correct environment and don't accidentally affect your local database.
// Using Laravel's artisan test command (default)
'Tests' => TestCommand::artisan(),
// Using Pest
'Tests' => TestCommand::pest(),
// Using PHPUnit directly
'Tests' => TestCommand::phpunit(),
// Custom arguments
'Tests' => TestCommand::artisan('--filter=UserTest'),
solo:dumpsSolo also ships with a custom "Dump Server" that will intercept dump commands from your code and show them in Solo instead of inline. You can run this as a normal artisan command via php artisan solo:dumps.
Try these steps:
--ansi or --colors=always optionYes! Use this format: vendor/bin/sail artisan schedule:work --ansi
No, Solo requires ext-pcntl and other Unix-specific features. If you know how to fix that, please open a PR.
I wouldn't! Use supervisor or similar tools for production environments.
This is free! If you want to support me:
Solo was developed by Aaron Francis. If you like it, please let me know!
Special thanks to: