Hi there, you know the Shepherd: it is an elegant service manager looking after a herd of daemons. Since it can be extended with Guile, I decided to do just that to add an extra skill to the Shepherd, turning it into the Swineherd.
The Swineherd is a manager of Guix System containers. It is implemented as a Shepherd service called “swineherd” that lets you manage Guix System containers as Shepherd services. These system container services implement a few common features to bring up bridge networking, execute commands inside the containers, peek at files, and get simple usage stats. Swineherd also provides an optional HTTP API server to launch, manage, and destroy containers through an HTTP client. This makes the Swineherd useful for building web applications that launch Guix System containers on demand. It comes with an Info manual describing the assumptions, the required setup, as well as the implemented commands and the HTTP API. The Swineherd was designed to be used with Shepherd on foreign distros, so it does not assume to be running on top of Guix System (for better or worse). You can find the code here: https://github.com/BIMSBbioinfo/swineherd Of course the Swineherd is also available as a Guix package called “swineherd”. If this tickles your interests I’d be very happy to hear your comments and incorporate patches to extend it beyond my original requirements. -- Ricardo