The main components of Gush are an experiment controller that typically runs on a user's workstation and a lightweight client process that runs on all nodes hosting the experiment. The clients receive messages from the controller and execute commands on behalf of the controller on a remote host. For example, the controller could instruct the clients to install a new software package or to execute and monitor some process, and the clients would notify the controller when the requested tasks were completed.
Gush has a bootstrap mechanism that allows clients to be installed on remote hosts as necessary. The bootstrap scripts either download the appropriate binaries from a repository, or it fetches the source code and builds the clients on the remote host. The former mode has been very useful on PlanetLab, where we can automatically install statically-linked clients without installing the necessary libraries or wasting cycles to compile the clients.