PHPackages                             subhamchbty/orchestral - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. subhamchbty/orchestral

ActiveLibrary[Queues &amp; Workers](/categories/queues)

subhamchbty/orchestral
======================

Orchestrate and conduct your Laravel long-running processes with elegance

1.0.2(9mo ago)03[9 issues](https://github.com/subhamchbty/orchestral/issues)MITPHPPHP ^8.2CI passing

Since Sep 8Pushed 3mo agoCompare

[ Source](https://github.com/subhamchbty/orchestral)[ Packagist](https://packagist.org/packages/subhamchbty/orchestral)[ Docs](https://github.com/subhamchbty/orchestral)[ RSS](/packages/subhamchbty-orchestral/feed)WikiDiscussions 1.x Synced today

READMEChangelog (4)Dependencies (5)Versions (8)Used By (0)

🎼 Orchestral - Laravel Process Manager
======================================

[](#-orchestral---laravel-process-manager)

[![Latest Version on Packagist](https://camo.githubusercontent.com/69e4dc20169b18125026b06ef7c5e49453fe131733cb14b694bf09b50e64f740/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f73756268616d63686274792f6f72636865737472616c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/subhamchbty/orchestral)[![Total Downloads](https://camo.githubusercontent.com/41c3fbc4e9f01440176f090fa4b9a7a0510ada85b90611ecf20243995e7d37e1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f73756268616d63686274792f6f72636865737472616c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/subhamchbty/orchestral)[![License](https://camo.githubusercontent.com/66f3b2087176d83171aa801a8aab434fece0cbc657d81aaf09e0c5a82a6f8d61/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f73756268616d63686274792f6f72636865737472616c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/subhamchbty/orchestral)[![PHP Version](https://camo.githubusercontent.com/d3d27e81f1b1f74d7e650c53792022ecd9b408398fc81c81cf172a4cedaddd44/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f73756268616d63686274792f6f72636865737472616c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/subhamchbty/orchestral)

Orchestral is an elegant Laravel package for orchestrating and conducting long-running processes with the grace of a symphony conductor. It provides a Horizon-like supervisor configuration system for managing commands like `queue:work`, `schedule:work`, and any custom long-running processes.

📚 Table of Contents
-------------------

[](#-table-of-contents)

- [✨ Features](#-features)
- [🤔 Why use Orchestral?](#-why-use-orchestral)
    - [The Problem](#the-problem)
    - [The Orchestral Solution](#the-orchestral-solution)
    - [Use Cases](#use-cases)
    - [Example Scenario](#example-scenario)
- [📦 Installation](#-installation)
- [🚀 Quick Start](#-quick-start)
- [🎹 Commands](#-commands)
- [📊 Monitoring](#-monitoring)
- [🔧 Advanced Configuration](#-advanced-configuration)
    - [Storage Options](#storage-options)
    - [Process Management Settings](#process-management-settings)
- [📄 Requirements](#-requirements)
- [📝 License](#-license)
- [🤝 Contributing](#-contributing)
- [🐛 Issues](#-issues)

✨ Features
----------

[](#-features)

- 🎭 **Musical-themed API** - Conduct, pause, and encore your processes
- 🎼 **Environment-specific configurations** - Different setups for local, staging, and production
- 👥 **Multiple process management** - Run multiple instances of the same command
- 💾 **Memory management** - Set memory limits and auto-restart on exceeded limits
- 🔄 **Auto-restart on failure** - Configurable restart attempts with delays
- 📊 **Real-time status monitoring** - Track CPU, memory, and uptime
- ⚡ **Graceful shutdown** - Properly stop processes without data loss
- 🗄️ **Flexible storage** - Support for Redis (fast) or Database (persistent)
- 🎯 **Process priority control** - Set nice values for process prioritization

🤔 Why use Orchestral?
---------------------

[](#-why-use-orchestral)

### The Problem

[](#the-problem)

In traditional deployment environments like Kubernetes, managing long-running Laravel processes requires:

- **Separate pods** for each command (`queue:work`, `schedule:work`, custom workers)
- **Complex DevOps configurations** for each process type
- **Multiple deployment manifests** to maintain
- **Increased infrastructure complexity** and resource overhead
- **Dependency on DevOps team** for process configuration changes

### The Orchestral Solution

[](#the-orchestral-solution)

Orchestral simplifies this by allowing you to:

✅ **Keep everything in one place** - All your long-running processes managed from a single Laravel application
✅ **Shift control to developers** - Configure and manage processes through Laravel config files, not Kubernetes manifests
✅ **Reduce deployment complexity** - Deploy one application that manages all your background processes
✅ **Save resources** - Run multiple process types in a single container/server with proper isolation
✅ **Maintain consistency** - Use the same configuration approach across all environments (local, staging, production)

### Use Cases

[](#use-cases)

Orchestral is perfect when you need to:

- Run multiple queue workers with different configurations
- Manage scheduled tasks alongside queue workers
- Run custom long-running processes (WebSocket servers, file watchers, etc.)
- Quickly adjust process counts and memory limits
- Monitor and restart failed processes automatically
- Have a Horizon-like experience for all your processes, not just queues

### Example Scenario

[](#example-scenario)

**Without Orchestral (Kubernetes):**

```
# Multiple separate deployments needed
- queue-default-deployment.yaml (3 replicas)
- queue-emails-deployment.yaml (2 replicas)
- scheduler-deployment.yaml (1 replica)
- websocket-deployment.yaml (1 replica)
# Each needs separate configuration, monitoring, scaling rules
```

**With Orchestral:**

```
// One configuration file manages everything
'performances' => [
    'production' => [
        'queue-default' => ['command' => 'queue:work', 'performers' => 3],
        'queue-emails' => ['command' => 'queue:work --queue=emails', 'performers' => 2],
        'scheduler' => ['command' => 'schedule:work', 'performers' => 1],
        'websocket' => ['command' => 'websocket:serve', 'performers' => 1],
    ],
],
```

Deploy once, manage everything from your Laravel application! 🎼

📦 Installation
--------------

[](#-installation)

```
# Install via Composer
composer require subhamchbty/orchestral
```

The package will auto-register its service provider.

🚀 Quick Start
-------------

[](#-quick-start)

### 1. Run the Interactive Installer

[](#1-run-the-interactive-installer)

```
php artisan orchestral:install
```

The installer will:

- Publish the configuration file
- Ask about your storage preference (Redis or Database)
- Set up necessary migrations if using database storage

### 2. Configure Your Processes

[](#2-configure-your-processes)

Edit `config/orchestral.php` to define your processes:

```
'performances' => [
    'local' => [
        'queue-worker' => [
            'command' => 'queue:work',
            'performers' => 2,      // Number of processes
            'memory' => 128,        // Memory limit in MB
            'timeout' => 3600,      // Timeout in seconds
            'options' => [
                '--tries' => 3,
                '--sleep' => 3,
            ],
        ],
        'scheduler' => [
            'command' => 'schedule:work',
            'performers' => 1,
            'memory' => 64,
        ],
    ],
],
```

### 3. Start Conducting

[](#3-start-conducting)

```
# Start all processes
php artisan orchestral:conduct

# Start specific process
php artisan orchestral:conduct queue-worker

# Run in daemon mode with monitoring
php artisan orchestral:conduct --daemon
```

🎹 Commands
----------

[](#-commands)

CommandDescription`orchestral:install`Interactive setup wizard`orchestral:conduct`Start conducting processes`orchestral:pause`Gracefully pause all performances`orchestral:encore`Restart performances`orchestral:status`Show real-time process status`orchestral:instruments`List configured processes📊 Monitoring
------------

[](#-monitoring)

Check the status of your processes:

```
# Basic status
php artisan orchestral:status

# With health information
php artisan orchestral:status --health

# JSON output for automation
php artisan orchestral:status --json
```

🔧 Advanced Configuration
------------------------

[](#-advanced-configuration)

### Storage Options

[](#storage-options)

**Redis (Recommended)**

```
'storage' => 'redis',
```

- Fast, no migration needed
- Better for high-frequency updates
- Requires Redis server

**Database**

```
'storage' => 'database',
```

- Works with any Laravel-supported database
- Persistent storage for reporting
- Requires migration: `php artisan migrate`

### Process Management Settings

[](#process-management-settings)

```
'management' => [
    'restart_on_failure' => true,
    'restart_delay' => 5,           // Seconds before restart
    'max_restart_attempts' => 10,   // Maximum restart attempts
    'graceful_shutdown_timeout' => 30, // Seconds to wait for graceful stop
],
```

📄 Requirements
--------------

[](#-requirements)

- PHP ^8.2
- Laravel ^12.0
- Symfony Process ^7.0
- Redis (optional, for Redis storage)

📝 License
---------

[](#-license)

MIT License - See [LICENSE](LICENSE) file for details.

🤝 Contributing
--------------

[](#-contributing)

We welcome contributions to Orchestral! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.

### Getting Started

[](#getting-started)

1. **Fork the repository** on GitHub
2. **Clone your fork** locally
3. **Install dependencies**: `composer install`
4. **Create a feature branch**: `git checkout -b feature/your-feature-name`

### Development Guidelines

[](#development-guidelines)

- Write clear, descriptive commit messages
- Keep changes focused and atomic
- Update documentation for any new features
- **Format your code** with Laravel Pint before submitting: `./vendor/bin/pint`

### Testing Requirements

[](#testing-requirements)

**Important**: All contributions must include appropriate test cases. When submitting a pull request:

- ✅ **Add unit tests** for new functionality
- ✅ **Add integration tests** for command interactions
- ✅ **Update existing tests** if modifying behavior
- ✅ **Ensure all tests pass** before submitting
- ✅ **Test edge cases** and error conditions

Run the test suite:

```
./vendor/bin/pest
```

### Submitting Changes

[](#submitting-changes)

1. **Run the test suite** to ensure everything works
2. **Push your changes** to your fork
3. **Create a pull request** with:
    - Clear description of changes
    - Reference to any related issues
    - Screenshots/examples if applicable
    - Confirmation that tests are included

🐛 Issues
--------

[](#-issues)

Found a bug? Please [open an issue](https://github.com/subhamchbty/orchestral/issues) on GitHub.

---

*"Orchestrate your processes with the elegance of a symphony"* 🎼

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance68

Regular maintenance activity

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~60 days

Total

4

Last Release

116d ago

Major Versions

0.1.0-beta → 1.0.02025-09-08

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/45362908?v=4)[Subham Chakraborty](/maintainers/subhamchbty)[@subhamchbty](https://github.com/subhamchbty)

---

Top Contributors

[![subhamchbty](https://avatars.githubusercontent.com/u/45362908?v=4)](https://github.com/subhamchbty "subhamchbty (15 commits)")

---

Tags

schedulerlaravelprocessqueuesupervisororchestratorconductor

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/subhamchbty-orchestral/health.svg)

```
[![Health](https://phpackages.com/badges/subhamchbty-orchestral/health.svg)](https://phpackages.com/packages/subhamchbty-orchestral)
```

###  Alternatives

[laravel/horizon

Dashboard and code-driven configuration for Laravel queues.

4.2k95.4M304](/packages/laravel-horizon)[anourvalar/eloquent-serialize

Laravel Query Builder (Eloquent) serialization

11223.5M33](/packages/anourvalar-eloquent-serialize)[codewithdennis/larament

Larament is a time-saving starter kit to quickly launch Laravel 13.x projects. It includes FilamentPHP 5.x pre-installed and configured, along with additional tools and features to streamline your development workflow.

3891.8k](/packages/codewithdennis-larament)[mpbarlow/laravel-queue-debouncer

A wrapper job for debouncing other queue jobs.

63825.7k1](/packages/mpbarlow-laravel-queue-debouncer)[convenia/pigeon

3334.8k](/packages/convenia-pigeon)[foxxmd/laravel-elasticbeanstalk-queue-worker

Deploy your Laravel application as a queue worker on AWS ElasticBeanstalk

5495.7k](/packages/foxxmd-laravel-elasticbeanstalk-queue-worker)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
