PHPackages                             survos/supervisor-bundle - 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. survos/supervisor-bundle

ActiveSymfony-bundle[Queues &amp; Workers](/categories/queues)

survos/supervisor-bundle
========================

Supervises a configured set of long-running processes and presents them in a multi-pane TUI.

2.10.20(1mo ago)247MITPHPPHP &gt;=8.4

Since Jun 23Pushed 1mo agoCompare

[ Source](https://github.com/survos/supervisor-bundle)[ Packagist](https://packagist.org/packages/survos/supervisor-bundle)[ GitHub Sponsors](https://github.com/kbond)[ RSS](/packages/survos-supervisor-bundle/feed)WikiDiscussions main Synced 2w ago

READMEChangelogDependencies (7)Versions (2)Used By (0)

Survos Supervisor Bundle
========================

[](#survos-supervisor-bundle)

Supervises a configured set of long-running processes and presents them in a multi-pane **TUI dashboard** — start them, watch each one's live output in its own pane, and let them restart on their own. Think `foreman`/`honcho` with a built-in terminal UI, built on `symfony/process` and `symfony/tui`.

It also knows how to **run one `messenger:consume` worker per transport** (`--workflow`), so you can supervise a whole async pipeline with a single command instead of hand-starting a worker per queue.

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

[](#installation)

```
composer require survos/supervisor-bundle
```

`symfony/messenger` is optional — only the `--workflow` queue discovery needs it; the supervisor works as a generic process runner without it.

Usage
-----

[](#usage)

### 1. Supervise processes from a config file

[](#1-supervise-processes-from-a-config-file)

Create `supervisor.yaml` in your project root:

```
processes:
  api:
    cmd: ['php', 'bin/console', 'app:serve', '-v']
    restart: always
  worker:
    cmd: ['php', 'bin/console', 'messenger:consume', 'async', '-v', '--time-limit=3600', '--memory-limit=512M']
    restart: always
  one-shot:
    cmd: ['php', 'bin/console', 'app:warmup']
    restart: never

ring_buffer_lines: 5000      # scrollback kept per process
follow_by_default: true      # panes auto-scroll to the newest line
```

Then run the dashboard:

```
php bin/console survos:supervisor                 # ./supervisor.yaml (or bundle config)
php bin/console survos:supervisor -c deploy.yaml  # an explicit config
php bin/console survos:supervisor --no-tui        # stream prefixed lines instead of the TUI
```

### 2. Supervise a messenger pipeline (`--workflow`)

[](#2-supervise-a-messenger-pipeline---workflow)

Instead of a config file, point it at a transport **code** and it runs one supervised `messenger:consume` per matching transport — discovered from the messenger transport registry, so it needs no knowledge of how the queues were defined:

```
# Every transport named "dataset" or "dataset.*" → dataset.raw, dataset.normalize, dataset.enrich, …
php bin/console survos:supervisor --workflow=dataset
php bin/console survos:supervisor -w dataset --no-tui
```

This is the one-command way to run **and** monitor an async workflow: the supervisor is both the runner (it spawns the consumers) and the monitor (each consumer's output in its own pane).

Configuration reference
-----------------------

[](#configuration-reference)

Per process:

keydefaultmeaning`cmd`*(required)*argv array, e.g. `['php','bin/console','…']``restart``never``never` · `on-failure` · `always``cwd`*(project dir)*working directory`env``{}`extra environment variables`autostart``true`start with the supervisor (vs. start it manually later)`backoff`—restart backoff: `initial` (1.0s), `max` (30.0s), `multiplier` (2.0)Top level:

keydefaultmeaning`ring_buffer_lines``5000`scrollback retained per process`follow_by_default``true`panes follow the tail on launchCommand options
---------------

[](#command-options)

optionshortcutdescription`--config``-c`path to a supervisor YAML (default `./supervisor.yaml`, then bundle config)`--workflow``-w`supervise one `messenger:consume` per transport matching this code`--no-tui`disable the TUI; stream prefixed output lines to stdoutLicense
-------

[](#license)

MIT

###  Health Score

43

—

FairBetter than 89% of packages

Maintenance90

Actively maintained with recent releases

Popularity14

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity51

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

Unknown

Total

1

Last Release

46d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/21b39551f92ed4143772c622f9e571589c5a72c96ab3c53fe67489ce0d83e806?d=identicon)[tacman1123](/maintainers/tacman1123)

---

Top Contributors

[![tacman](https://avatars.githubusercontent.com/u/619585?v=4)](https://github.com/tacman "tacman (2 commits)")

### Embed Badge

![Health badge](/badges/survos-supervisor-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/survos-supervisor-bundle/health.svg)](https://phpackages.com/packages/survos-supervisor-bundle)
```

###  Alternatives

[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.8M651](/packages/shopware-core)

PHPackages © 2026

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