Fork me on GitHub


The PHP Task Runner you've been waiting for!

Why Another Task Runner

There are plenty of tasks runners out there right now, but Bldr hopes to reduce the number of dependencies required to get running with a task runner. Assuming you are already working with PHP, Bldr doesn't have any new dependencies, besides the third party extensions. You don't need to install npm, or even Java.

The Big Goal

The big goal of this task runner is to encourage extensibility. Bldr aims to make it very simple to create new functionality by using the Dependency Injection Component from Sensio's Symfony2 Framework. If you want to take a look at how to make a new extension, check out the documentation, on Read The Docs.

Issues & Contributing

Having troubles with Bldr? Post an issue in github, or message me on in #bldr on Freenode. There is also a mailing list. If you'd like to help contribute, just create a pull request on Github! If you've made an extension that you think should be in the core, feel free to send me a message, or post an issue.


This should be installed via composer, for now. You can either install it globally, or in your own project. If it is the first time you globally install a dependency then make sure you include ~/.composer/vendor/bin in $PATH as shown here.

Global Setup

$ composer global require bldr-io/bldr "@stable"

# Or

$ curl -sS | php
$ mv bldr.phar /usr/bin/bldr

Project Setup

It is suggested that you use the phar, as you can get conflicts with dependencies by including it in your project!

$ curl -sS | php

# Or

$ composer require bldr-io/bldr "@stable"

And that’s it! From here, you should be able to run bldr if you set it up globally, or ./bin/bldr if you set it up in your project.

Sample Config

Configuration can be in almost any format (Yaml, Json, Xml, Ini, or PHP) but the default is Yaml. Heres a simple configuration file.

    name: acme/demo-project
    description: Description for your project
            description: Sample Profile
                - sampleJob
            description: Runs a sleep for 5 seconds, then sends a message to the screen
                    type: sleep
                    seconds: 5
                    type: notify
                    message: Finished Sleeping. Ending now.