PHPackages                             anystack-sh/porter - 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. [CLI &amp; Console](/categories/cli)
4. /
5. anystack-sh/porter

ActiveProject[CLI &amp; Console](/categories/cli)

anystack-sh/porter
==================

Spin up your development background processes with ease.

v0.0.11(3y ago)53067912[2 PRs](https://github.com/anystack-sh/porter/pulls)MITPHPPHP ^8.1

Since Dec 26Pushed 1y ago3 watchersCompare

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

READMEChangelog (10)Dependencies (7)Versions (12)Used By (0)

[![Total Downloads](https://camo.githubusercontent.com/40b83c08ec45aebdf8536bb9c8f6c5a8e0e193489c60d12fff68a36b62af1f7a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f616e79737461636b2d73682f706f72746572)](https://packagist.org/packages/anystack-sh/porter)[![Latest Stable Version](https://camo.githubusercontent.com/f97a2363df31fcda2689f29c3d89af8d81e7864d55508ed5466739b48006e706/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616e79737461636b2d73682f706f72746572)](https://packagist.org/packages/anystack-sh/porter)[![License](https://camo.githubusercontent.com/16eb12c1399899f211039e60fb715778ca0759720f843fad39f8b43c70f6ac34/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f616e79737461636b2d73682f706f72746572)](https://packagist.org/packages/anystack-sh/porter)

About Porter
------------

[](#about-porter)

Porter is a command-line interface (CLI) tool that makes it easy to run background services by adding a few lines to a configuration file. These services are managed by Supervisord, a process control system that ensures that all processes are kept up and running. With Porter, you don't have to manually start and manage background services in multiple terminal tabs. Instead, you can simply use the `porter` command to manage all of your services in a single place.

### Installation

[](#installation)

To install Porter, you can use `composer` or download the build manually from this repository.

```
composer global require anystack-sh/porter
```

#### Requirements

[](#requirements)

To use Porter you must install `supervisord`:

- macOS: `brew install supervisor`
- Linux: `apt install supervisor`

If you want to use the watch feature to restart services when files change you will also need to install:

- chokidar: `npm install --global chokidar`

### Add your first project

[](#add-your-first-project)

In your terminal navigate to your project and run `porter init` to create a boilerplate `porter.yml`:

```
~/Developer/anystack: $ porter init

 Create porter.yml in /Users/Developer/anystack? (yes/no) [yes]:
 > yes

Creating porter.yml boilerplate: ✔
Run "porter add" to add your product and start your services.
```

Modify `porter.yml` and add the services you want to run. In your terminal navigate to your project and run `porter add`:

```
~/Developer/anystack: $ porter add

Adding /Users/Developer/anystack: ✔
Restarting Porter: ✔
```

A new `porter.yml` has been created. This file contains all the services you want to run in the background, for example:

```
services:
  - name: Queue
    command: php artisan horizon
    processes: 3 # Optional, number of parallel processes. Defaults to 1
    restart:
        watch:
            - app/Jobs
            - app/Mail/WelcomEmail.php

  - name: Vite
    directory: Users/developer/anystack/front-end
    command: npm run dev
    environment:
        FOO: "BAR"

  - name: Octane
    command: php artisan octane:start --port=8000 --no-interaction

  - name: Stripe
    command: stripe listen --forward-to localhost:8000/webhooks/stripe
    restart:
      minutes: 5
```

The following properties are available per command:

PropertyDescriptionRequirednameShortname that describes your service.YesdirectorySet the working directory, defaults to porter.yml directory.NocommandThe command to run relative to the root of your project or custom defined directory.Yesrestart- minutesAfter how many minutes the service should restart.No- watchRestart service if files or directories are modified.NoprocessesSet the number of parallel processes for the service. Defaults to 1.NoenvironmentSet custom environment variablesNoIf you have made changes to your `porter.yml` you can use the `porter restart` command to apply your changes.

### Monitoring services

[](#monitoring-services)

To monitor your services you can use the `porter status` command.

```
~/Developer/anystack: $ porter status
+----------+-----------------+---------+---------------------------+
| App      | Name            | Status  | Description               |
+----------+-----------------+---------+---------------------------+
| anystack | anystack-octane | RUNNING | pid 41277, uptime 0:03:29 |
| anystack | anystack-queue  | RUNNING | pid 41275, uptime 0:03:29 |
| anystack | anystack-vite   | RUNNING | pid 41276, uptime 0:03:29 |
+----------+-----------------+---------+---------------------------+
```

### Tail service logs

[](#tail-service-logs)

#### Basic tail usage

[](#basic-tail-usage)

You can tail one or more services (unified) using the `porter tail` command.

This command is context-aware and will automatically ask which services you want to tail:

```
~/Developer/anystack: $ porter tail

 Which service do you want to tail?:
  [0] anystack-octane
  [1] anystack-queue
  [2] anystack-vite
 > 0,1

 Use CTRL+C to stop tailing.

 Horizon started successfully.

 INFO  Server running…
 Local: http://127.0.0.1:8000
 200    GET / ... 33.38 mb 79.10 ms
```

#### Tail all available services

[](#tail-all-available-services)

To automatically tail all available services, pass the `--all` option:

```
~/Developer/anystack: $ porter tail --all
 Use CTRL+C to stop tailing.

 Horizon started successfully.

 INFO  Server running…
 Local: http://127.0.0.1:8000
 200    GET / ... 33.38 mb 79.10 ms
```

#### Tail one or more services

[](#tail-one-or-more-services)

You can specify one or more services that you would like to tail by passing
the `--services` option with a comma-separated list of service indexes or service names.

You can find the index and name of each available service by running `porter tail` with no arguments:

```
~/Developer/anystack: $ porter tail

 Which service do you want to tail?:
  [0] anystack-octane
  [1] anystack-queue
  [2] anystack-vite
```

The following examples reference the service names and indexes found above:

```
~/Developer/anystack: $ porter tail --services=0,2
```

```
~/Developer/anystack: $ porter tail --services=anystack-octane,anystack-vite
```

*The above two commands are functionally equivalent.*

```
~/Developer/anystack: $ porter tail --services=1
```

```
~/Developer/anystack: $ porter tail --services=anystack-queue
```

*The above two commands are functionally equivalent.*

### All available commands

[](#all-available-commands)

CommandDescription`porter add`Add current directory as a new application.`porter remove`Remove current application services.`porter start`Start all services.`porter restart`Restart one or multiple services.`porter stop`Stop all services.`porter tail`Tail service logs.### Brought to you by Anystack

[](#brought-to-you-by-anystack)

Anystack is the all-in-one product platform that helps you make a living by writing code. Push your code to GitHub, and we will take care of everything else. [Start your adventure today](https://anystack.sh?utm_source=github&utm_campaign=porter&utm_medium=repository).

License
-------

[](#license)

Porter is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).

###  Health Score

36

—

LowBetter than 82% of packages

Maintenance29

Infrequent updates — may be unmaintained

Popularity34

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 72.2% 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 ~14 days

Recently: every ~20 days

Total

11

Last Release

1097d ago

PHP version history (2 changes)v0.0.1PHP ^8.0

v0.0.7PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/6216c36a8a2b7b6afbd86366a19b8175542b37cdf305ea54c8c4cf71c9840fb5?d=identicon)[PhiloNL](/maintainers/PhiloNL)

---

Top Contributors

[![PhiloNL](https://avatars.githubusercontent.com/u/1133950?v=4)](https://github.com/PhiloNL "PhiloNL (26 commits)")[![BenQoder](https://avatars.githubusercontent.com/u/24754078?v=4)](https://github.com/BenQoder "BenQoder (3 commits)")[![squatto](https://avatars.githubusercontent.com/u/748444?v=4)](https://github.com/squatto "squatto (3 commits)")[![Robertbaelde](https://avatars.githubusercontent.com/u/4356288?v=4)](https://github.com/Robertbaelde "Robertbaelde (1 commits)")[![olumby](https://avatars.githubusercontent.com/u/5549119?v=4)](https://github.com/olumby "olumby (1 commits)")[![dpslwk](https://avatars.githubusercontent.com/u/234460?v=4)](https://github.com/dpslwk "dpslwk (1 commits)")[![faissaloux](https://avatars.githubusercontent.com/u/60013703?v=4)](https://github.com/faissaloux "faissaloux (1 commits)")

---

Tags

background-servicedevelopment-toolsdevelopment-workflowlaravellaravel-packagephpproductivitysupervisorphpcliconsolelaravellaravel-packageproductivitysupervisordeveloper-toolsbackground-processesdevelopment-workflow

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/anystack-sh-porter/health.svg)

```
[![Health](https://phpackages.com/badges/anystack-sh-porter/health.svg)](https://phpackages.com/packages/anystack-sh-porter)
```

###  Alternatives

[nunomaduro/laravel-console-menu

Laravel Console Menu is an output method for your Laravel/Laravel Zero commands.

815412.0k48](/packages/nunomaduro-laravel-console-menu)[nunomaduro/laravel-console-dusk

Laravel Console Dusk allows the usage of Laravel Dusk in Laravel/Laravel Zero artisan commands.

16255.4k7](/packages/nunomaduro-laravel-console-dusk)

PHPackages © 2026

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