PHPackages                             snelling/maestro - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. snelling/maestro

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

snelling/maestro
================

Simple IT automation tool

0.1.0(9y ago)010MITPHPPHP ~7.0

Since Mar 23Pushed 9y ago1 watchersCompare

[ Source](https://github.com/snellingio/maestro)[ Packagist](https://packagist.org/packages/snelling/maestro)[ Docs](https://github.com/snelling/maestro)[ RSS](/packages/snelling-maestro/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (1)Dependencies (6)Versions (2)Used By (0)

Maestro
=======

[](#maestro)

[![Latest Version on Packagist](https://camo.githubusercontent.com/a4df4cacf780b04dcfe0969a93244175f1fe3373cfdde748cb3ced8b8edc6ba9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f736e656c6c696e672f6d61657374726f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/snelling/maestro)[![Software License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)[![Build Status](https://camo.githubusercontent.com/4d198f360d33a5578b81019f180ed7b60d6caabeacee89bc2fbe59aa902b56e2/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f736e656c6c696e672f6d61657374726f2f6d61737465722e7376673f7374796c653d666c61742d737175617265)](https://travis-ci.org/snelling/maestro)[![Coverage Status](https://camo.githubusercontent.com/f15a0a7e29bd481d99c57dda04ab1918640498d0d6c2e699319b908d905555d8/68747470733a2f2f696d672e736869656c64732e696f2f7363727574696e697a65722f636f7665726167652f672f736e656c6c696e672f6d61657374726f2e7376673f7374796c653d666c61742d737175617265)](https://scrutinizer-ci.com/g/snelling/maestro/code-structure)[![Quality Score](https://camo.githubusercontent.com/80712070483bb4e93c4790f34ef4afb0369c52f98b7565efcca239b561d274f0/68747470733a2f2f696d672e736869656c64732e696f2f7363727574696e697a65722f672f736e656c6c696e672f6d61657374726f2e7376673f7374796c653d666c61742d737175617265)](https://scrutinizer-ci.com/g/snelling/maestro)[![Total Downloads](https://camo.githubusercontent.com/9fd6f5a9731b0a9413aa250e79e238cf12c91ccc0f26c29d0869d25cd65b0459/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f736e656c6c696e672f6d61657374726f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/snelling/maestro)

Maestro is a simple IT automation tool to run bash scripts against local or remote servers. It will automatically pipe all output from any script run into your terminal.

```
KRAMER: You know you hurt the Maestro's feelings.

JERRY: Oh what, because I didn't call him Maestro?

KRAMER: That's right.

JERRY: Ya know I feel a little funny calling somebody Maestro.

KRAMER: Why?

JERRY: Because it's a stupid thing to be called.

```

- Seinfeld, [Season 7 Episode 3](https://www.hulu.com/watch/807596#i0,p0,s7,d0)

Install
-------

[](#install)

Via Composer

```
composer global require snelling/maestro
```

This is still a work in progress, and probably will need to be installed by hand until I have officially tagged this repository.

Usage
-----

[](#usage)

Go to any directory and init a new maestro project with the command `maestro init`

```
➜  maestro init
Config file & scripts directory created!
```

This command will create a new `maestro/` folder, and put a few things in there for you.

```
➜  tree maestro
maestro
├── configuration.json
└── scripts
    ├── ls
    └── pwd

1 directory, 3 files
```

The `maestro/configuration.json` file is used to define targets. A target is a local or remote machine to run a command against.

```
{
  "targets": {
    "local": "127.0.0.1",
    "web": "user@192.168.1.1"
  }
}
```

You can list the available targets at any time by running `maestro targets`

```
➜  maestro targets
 ------- ------ -------------
  Name    User   IP Address
 ------- ------ -------------
  local          127.0.0.1
  web     user   192.168.1.1
 ------- ------ -------------
```

The `maestro/scripts/` folder is where you will put any bash script that you would like to run against a target. By default we include two commands out of the box, `ls` and `pwd`. You can list all available scripts to run by running the command `maestro scripts`

```
➜  maestro scripts
 ------ ------------------------------------
  Name   Description
 ------ ------------------------------------
  ls     Runs ls -al command
  pwd    Gets the current working directory
 ------ ------------------------------------
```

The name of the script is just the script filename. The description of the script is a bash comment inside the bash script. You need to add `# @description ` to make a description show up in the `maestro scripts` command.

```
➜  cat maestro/scripts/ls
#!/usr/bin/bash
# @description Runs ls -al command
set -e
ls -al
```

Let's make a new script that gets a machine's hostname. Note how we include `set -e` at the top of the script to terminate output if there is an error.

```
➜  echo '#!/usr/bin/bash
# @description Gets the hostname of the machine
set -e
hostname' >maestro/scripts/hostname
```

Then, we can verify it comes up as valid script by re-running the `maestro scripts` command.

```
➜  maestro scripts
 ---------- ------------------------------------
  Name       Description
 ---------- ------------------------------------
  hostname   Gets the hostname of the machine
  ls         Runs ls -al command
  pwd        Gets the current working directory
 ---------- ------------------------------------
```

Finally, you can run script against a target by running `maestro run  `

```
➜  maestro run hostname local
Running script hostname on 127.0.0.1
[127.0.0.1]: localhost
```

Change log
----------

[](#change-log)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Testing
-------

[](#testing)

```
$ composer test
```

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) and [CONDUCT](CONDUCT.md) for details.

Security
--------

[](#security)

If you discover any security related issues, please email  instead of using the issue tracker.

Credits
-------

[](#credits)

- [Sam Snelling](https://github.com/snellingio)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

22

—

LowBetter than 21% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community7

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

Unknown

Total

1

Last Release

3388d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7a37f810a66179a1246036739392736412ab4530b3c45b5eafc13244a9ec2be0?d=identicon)[snellingio](/maintainers/snellingio)

---

Top Contributors

[![snellingio](https://avatars.githubusercontent.com/u/9887585?v=4)](https://github.com/snellingio "snellingio (5 commits)")

---

Tags

Maestrosnelling

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/snelling-maestro/health.svg)

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

###  Alternatives

[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[composer/composer

Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.

29.5k196.2M3.1k](/packages/composer-composer)[friendsofphp/php-cs-fixer

A tool to automatically fix PHP code style

13.5k251.2M24.8k](/packages/friendsofphp-php-cs-fixer)[spatie/laravel-export

Create a static site bundle from a Laravel app

674146.0k6](/packages/spatie-laravel-export)

PHPackages © 2026

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