Git deploy cluster based on ploy and node-discover
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Think ploy + node-discover

Any ploy server you start via cloyster will discover other cloyster processes on the network and automatically propogate your git deployments to all other nodes within the cluster.

There is work to be done but this is already usable.


Currently pushing to a single node and propogating to all other nodes works. The log command does not currently propogate and aggregate all nodes. This is still to be done.


npm install -g cloyster



  cloyster server DIRECTORY PORT
  cloyster server { -d DIRECTORY | -p PORT | -a AUTHFILE | -f BOUNCER | -n CLUSTER-NAME }

    Create a cloyster http server, hosting repositories in DIRECTORY and listening
    on PORT for incoming connections.

    If AUTHFILE is given, it should be a json file that maps usernames to
    token strings to use for basic auth protection for cloyster actions.

    Type `cloyster help ssl` to show ssl options.

    You can specify a BOUNCER module with -f to use a custom http router.

    If CLUSTER-NAME is given, it will be used as part of the node-discover encryption
    key. This will allow you to to run multiple clusters without having to 
        change the default node-discover port.

  cloyster ls { -r REMOTE | --verbose, -v | --format=FORMAT }

    List the running process branch names at REMOTE.

    Verbose formatting will use `branch,hash,repo,port`.

  cloyster work { -r REMOTE | --format=FORMAT }

    List the working directories from checked out git commits.
    The default FORMAT is `repo,commit,time,branch`.

    Active branches are shown with a trailing *.

  cloyster clean

    Remove unused working directories. These are the directories listed in
    `cloyster work` without a *.

  cloyster log NAME { -n ROWS | -f | -b BEGIN | -e END }

    Show ROWS of log output for the branch NAME like `tail`.
    Default -n value: screen height.

    Stream live updates when `-f` is set like `tail -f`.
    Slice log records for NAME directly with `-b` and `-e`.

  cloyster log { -n ROWS | -f | -b BEGIN | -e END | --color=true }

    Show ROWS of log output for all branches.
    Lines will be prefaced with a colored branch name when stdout is a tty.

  cloyster mv SRC DST { -r REMOTE }

    Move the branch name SRC to the DST branch name at REMOTE.

  cloyster rm NAME { -r REMOTE }

    Remove the branch name at NAME, killing any running processes.

  cloyster restart NAME { -r REMOTE }

    Restart the process at NAME.

  cloyster stop NAME { -r REMOTE }

    Stop the process at NAME.

  cloyster redecloyster NAME { -r REMOTE }

    Redecloyster the process at NAME, re-running install and test scripts.

  cloyster help [TOPIC]

    Show this message or optionally a TOPIC.

    Topics: ssl


  For `cloyster ls`, `cloyster mv`, `cloyster rm` commands that take a REMOTE parameter:

  REMOTE can be a git remote name or a remote URL to a cloyster server. If there
  is exactly one cloyster remote in set up as a git remote, it will be used by