application deployment library for node.js
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

build status Gittyup is a small node.js application deployment library similar to n.


  • Command Line Interface.
  • Rollback support.
  • Script testing before using.
  • Start/Stop/Restart checked out apps.
  • Make a slug out of your app and easily move it quickly between servers.

Command Line

gup checkout daisy --repo= --branch=app-branch
gup use daisy r5 #use a particular checkout 


 rollback :name                                  Rollback a repositoriy           
 history :name                                   Repo history                     
 use :name :release                              Uses a repo                      
 checkout :name :repo OR checkout :name          checks out a repository



root directory by default is /etc/gittyup/

var gittyup = require('gittyup')('/etc/bonsai/garden/'),
app ='myApp');

app.checkout('myProjectSource', function(err, result)

    //something went wrong in the checkout phase - most likely in linking, rollback
    if(err) return app.rollback();  

    //test to make sure everythings good
    app.test(function(err, result)
        //something went wrong in the testing phase, rollback
        if(err) return app.rollback();

        //start upp the application
        app.process(function(err, process)



First argument can be either a string (app name), or object


  • name - The name of the application.
  • group - The group the application is in.
  • maxRecords - Maximum number of application records to keep locally.

.app().checkout(opsOrSource, callback)

  • opsOrSource - Options (object) or the repo source (string) for the app.
    • repository - repository of the project. Can be local directory, git repo, or .slug file

From a git repository:'myApp').checkout('', function(err, result)
    //do stuff!

From a generated slug:'myApp').checkout('', function(err, result)

From a local directory:'myApp').checkout('/some/local/path', function(err, result)



Returns a runnable process of the current checked out item.'myApp').process(function(err, process)

    process.start(function(err, result)

    process.stop(function(err, result)

    process.restart(function(err, result)


Tests the most recent checked out item. Make sure to include "scripts:test" in your package.json. Something like:

    "name": "myApp",

    "scripts": {
        "test": "./test"

When exiting the test program, an exit code of 0 tells gittyup the test was successful, whereas 1 tells gittyup the test failed.


Makes a slug out of the current checkout. Use this method if you need to move the application around between servers. Once a slug is made, calling "makeSlug" on the same checkout will have no effect.'myApp').makeSlug(function(err, item)
    console.log(item.slug); // /etc/gittyup/apps/myApp/16767565434/slug/753a644f4e7aaa7fc9132be92d000002.tar.gz


If you're moving the slug around, install gittyup on the other end and have something ready like this:'myApp').checkout('', function(err, result)
    // stuff with transported slug


Returns Information about the current checked out item.


Returns checkout history of the given application.


Uses a previously used checkout item without removing the current one.

.app().remove(checkoutId, callback)

Removes a checked out item.


Destroys the application, and all the checked out items.