Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
S

solo

> 编程语言
Open source

Your all-in-one Laravel command to tame local development

1.3K stars0 likes2 views
WebsiteGitHub

About

Your all-in-one Laravel command to tame local development

Your all-in-one Laravel command to tame local development


Solo for Laravel

[!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!

About

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:

bash
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.

Installation

  1. Require the package:
bash
composer require soloterm/solo --dev
  1. Install the package:
bash
php artisan solo:install

This will publish the configuration file to config/solo.php.

Configuration

Solo is entirely config-driven through config/solo.php. Here's a quick overview of what you can configure:

Commands

Define your commands in the commands array:

php
'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:

php
'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.

Lazy Commands

If you want to define a command that does not start automatically, you can append lazy() to a Command instance:

php
// You might need Reverb, but maybe not always, so don't autostart it.
'Reverb' => Command::from('php artisan reverb')->lazy()

Themes

Solo ships with both light and dark themes. Configure your preference in config/solo.php:

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.

Keybindings

Choose between default and vim-style keybindings:

php
'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.

Usage

Start Solo with:

bash
php artisan solo

Key Controls

Note these are the default bindings. They will be slightly different if you use the Vim bindings.

  • Navigation:

    • Left/Right arrows to switch between tabs
    • Up/Down arrows to scroll output
    • Shift + Up/Down to page scroll
    • g to quickly jump to any tab
  • Command Controls:

    • s to start/stop the current command
    • r to restart
    • c to clear output
    • p to pause output
    • f to resume (follow) output
  • Interactive Mode:

    • i to enter interactive mode
    • Ctrl+X to exit interactive mode
  • Global:

    • q or Ctrl+C to quit Solo

Special Commands

MakeCommand

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.

php
'Make' => new MakeCommand,

TestCommand

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.

php
// 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:dumps

Solo 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.

FAQ

My command isn't working

Try these steps:

  1. Test if it works outside of Solo
  2. Check if it has an --ansi or --colors=always option
  3. Verify it's writing to STDOUT
  4. Look for options to force STDOUT output

Can I run Sail commands?

Yes! Use this format: vendor/bin/sail artisan schedule:work --ansi

Does Solo support Windows?

No, Solo requires ext-pcntl and other Unix-specific features. If you know how to fix that, please open a PR.

Can I use this in production?

I wouldn't! Use supervisor or similar tools for production environments.

Support

This is free! If you want to support me:

  • Check out my courses:
    • Database School
    • Screencasting
  • Help spread the word about things I make

Credits

Solo was developed by Aaron Francis. If you like it, please let me know!

  • Twitter: https://twitter.com/aarondfrancis
  • Website: https://aaronfrancis.com
  • YouTube: https://youtube.com/@aarondfrancis
  • GitHub: https://github.com/aarondfrancis/solo

Special thanks to:

  • Joe Tannenbaum for his Laracasts course
  • Joe's Chewie package
  • Laravel Prompts
  • Will King for the Solo logo

Related Projects

  • Screen - Pure PHP terminal renderer
  • Dumps - Laravel command to intercept dumps
  • Grapheme - Unicode grapheme width calculator
  • Notify - PHP package for desktop notifications via OSC escape sequences
  • Notify Laravel - Laravel integration for soloterm/notify
  • TNotify - Standalone, cross-platform CLI for desktop notifications
  • VTail - Vendor-aware tail for Laravel logs

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

PHP

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言