PHPackages                             laratusk/supervise - 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. laratusk/supervise

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

laratusk/supervise
==================

Manage Linux Supervisor configuration files using Laravel config

v1.2.0(1mo ago)10MITPHPPHP ^8.2CI passing

Since Feb 20Pushed 2mo agoCompare

[ Source](https://github.com/laratusk/supervise)[ Packagist](https://packagist.org/packages/laratusk/supervise)[ Docs](https://github.com/laratusk/supervise)[ RSS](/packages/laratusk-supervise/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (22)Versions (4)Used By (0)

laratusk/supervise
==================

[](#laratusksupervise)

[![CI](https://github.com/laratusk/supervise/actions/workflows/ci.yml/badge.svg)](https://github.com/laratusk/supervise/actions/workflows/ci.yml)[![Latest Version on Packagist](https://camo.githubusercontent.com/677212694f1dbbe12da0a45b59ad946e5733cac3c0c363b2c4b8dc3702db65a7/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6c6172617475736b2f7375706572766973652e737667)](https://packagist.org/packages/laratusk/supervise)[![PHP Version](https://camo.githubusercontent.com/5e8991abb103f80f7fbeb42cbed20c181c0fb29ef47ce2e7f11d99902cbe2ce9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6c6172617475736b2f7375706572766973652e737667)](https://packagist.org/packages/laratusk/supervise)[![License](https://camo.githubusercontent.com/54c816067ec1c935a595d9eaa1ef2e435c1627c3ec15de0a41baf4196193c9ac/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6c6172617475736b2f7375706572766973652e737667)](https://packagist.org/packages/laratusk/supervise)

Define your [Supervisor](http://supervisord.org/) workers in Laravel config and generate real `.conf` files with one command. Your process config lives in code, not on the server.

---

What is this package?
---------------------

[](#what-is-this-package)

**Supervisor** is a process control system for Linux: it keeps long-running processes (queue workers, Horizon, Reverb, etc.) running and restarts them when they crash. You configure it by placing `.conf` files in a directory (e.g. `/etc/supervisor/conf.d/`).

**laratusk/supervise** is a Laravel package that:

- Lets you define those processes in `config/supervise.php` (worker name + command + any Supervisor options).
- Compiles that config into valid Supervisor `.conf` files.
- Can symlink them into your system Supervisor directory and reload Supervisor.

So instead of editing `.conf` files on each server, you edit one PHP config, commit it, and run `php artisan supervise:compile` (optionally with `--reload`) on deploy. Your worker setup is version-controlled and identical everywhere.

---

Requirements
------------

[](#requirements)

- PHP 8.2+
- Laravel 10, 11, or 12
- Supervisor installed on the server (for running the processes)

---

Installation
------------

[](#installation)

```
composer require laratusk/supervise
```

Publish config and prepare directories (run once per project):

```
php artisan supervise:install
```

This creates `.supervisor/conf.d/`, `storage/logs/supervisor/`, adds `.supervisor/` to `.gitignore`, and publishes `config/supervise.php`.

---

Quick start
-----------

[](#quick-start)

1. **Define workers** in `config/supervise.php` under the `workers` key. Each worker needs a `command` (the exact command line to run). The array key is the worker name.
2. **Compile** to generate `.conf` files:

    ```
    php artisan supervise:compile
    ```
3. **Link** them into Supervisor’s config directory (once per server, or when you add workers):

    ```
    php artisan supervise:link
    ```
4. **Reload** Supervisor so it picks up changes. You can do this in one step with compile:

    ```
    php artisan supervise:compile --reload
    ```

On deploy, many projects only need:

```
php artisan supervise:compile --reload
```

(assuming `supervise:link` was already run once on that server).

---

Configuration
-------------

[](#configuration)

Config file: `config/supervise.php`.

### Top-level keys

[](#top-level-keys)

KeyPurpose`conf_path`System directory where Supervisor reads configs. `supervise:link` creates symlinks here. Default: `/etc/supervisor/conf.d`.`output_path`Local directory (relative to project root) where compiled `.conf` files are written. Default: `.supervisor/conf.d`. Not committed (gitignored).`defaults`Supervisor \[program:x\] options applied to every worker. Any worker can override these.`workers`Your process definitions (see below).`groups`Optional Supervisor \[group:x\] definitions: group name =&gt; list of worker names.### Workers

[](#workers)

Each entry in `workers` is one Supervisor program. The **key** is the program name; the **value** is an array of options.

**Required:**

- **`command`** (string) — The command line to run. Examples: `php artisan horizon`, `php artisan queue:work redis --queue=default`, `php artisan reverb:start`, or any other command.

**Optional:**

- **`log`** (bool) — If `true`, sets `stdout_logfile` to `storage/logs/supervisor/{worker_name}.log`.
- Any Supervisor program directive (e.g. `numprocs`, `user`, `directory`, `stopwaitsecs`) to override the same key from `defaults`.

Example:

```
'workers' => [
    'horizon' => [
        'command' => 'php artisan horizon',
    ],
    'default-queue' => [
        'command'  => 'php artisan queue:work redis --queue=default --tries=3',
        'numprocs' => 3,
    ],
    'reverb' => [
        'command' => 'php artisan reverb:start',
        'log'     => true,
    ],
],
```

### Defaults

[](#defaults)

The `defaults` array holds standard Supervisor \[program:x\] directives (`numprocs`, `autostart`, `stopsignal`, `user`, `stdout_logfile`, etc.). They are applied to every worker; workers can override any of them. See the published `config/supervise.php` for the full list and defaults. For the official directive reference, see [Supervisor documentation](http://supervisord.org/configuration.html#program-x-section-values).

### Groups

[](#groups)

To define a Supervisor group (so you can control several programs together):

```
'groups' => [
    'app-workers' => ['horizon', 'default-queue'],
],
```

This generates a `[group:app-workers]` section with `programs=horizon,default-queue`. Worker names must exist under `workers`.

---

Commands
--------

[](#commands)

CommandDescription`php artisan supervise:install`One-time setup: creates dirs, publishes config, updates `.gitignore`.`php artisan supervise:compile`Generates `.conf` files from `config/supervise.php` into `output_path`. Overwrites existing files.`php artisan supervise:compile --reload`Same as above, then runs `supervisorctl reread` and `supervisorctl update`.`php artisan supervise:link`Creates symlinks from each compiled `.conf` in `output_path` to `conf_path`. Run once per server (or when adding workers).---

Deployment
----------

[](#deployment)

Typical deploy step:

```
php artisan supervise:compile --reload
```

This regenerates config from your codebase and tells Supervisor to reload. No manual `.conf` editing on the server.

---

Testing
-------

[](#testing)

```
composer test
```

---

License
-------

[](#license)

MIT. See [LICENSE.md](LICENSE.md).

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance86

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity48

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 ~17 days

Total

3

Last Release

53d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/755245aa5e4ba6c690b039cedcce5a86cd01b4f00d490cd71f03e6377ac302d5?d=identicon)[laratusk](/maintainers/laratusk)

---

Top Contributors

[![azer1ghost](https://avatars.githubusercontent.com/u/27803185?v=4)](https://github.com/azer1ghost "azer1ghost (9 commits)")

---

Tags

laravelprocessqueuehorizonsupervisor

###  Code Quality

TestsPest

Static AnalysisPHPStan, Rector

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/laratusk-supervise/health.svg)

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

###  Alternatives

[harris21/laravel-fuse

Circuit breaker for Laravel queue jobs. Protect your workers from cascading failures.

3786.5k](/packages/harris21-laravel-fuse)[croustibat/filament-jobs-monitor

Background Jobs monitoring like Horizon for all drivers for FilamentPHP

254255.2k6](/packages/croustibat-filament-jobs-monitor)[foxxmd/laravel-elasticbeanstalk-queue-worker

Deploy your Laravel application as a queue worker on AWS ElasticBeanstalk

5493.5k](/packages/foxxmd-laravel-elasticbeanstalk-queue-worker)[nuwber/rabbitevents

The Nuwber RabbitEvents package

120515.8k3](/packages/nuwber-rabbitevents)[pmatseykanets/artisan-beans

Easily manage your Beanstalkd job queues right from the Laravel artisan command

4482.1k](/packages/pmatseykanets-artisan-beans)

PHPackages © 2026

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