The GNU Shepherd

The GNU Shepherd is a service manager written in Guile that looks after the herd of daemons running on the system. It can be used as an “init” system (PID 1) and also by unprivileged users to manage per-user daemons—e.g., tor, privoxy, mcron. It supports several daemon startup mechanisms, including inetd and systemd-style socket activation. The GNU Shepherd is configured in Guile Scheme and can be extended in the same language. It builds on a simple memory-safe and callback-free programming model.

The GNU Shepherd is developed jointly with the GNU Guix project. It runs as PID 1 on Guix System and manages user services for Guix Home.

Downloading the Shepherd

Releases of the Shepherd can be found on the GNU servers: https://ftp.gnu.org/gnu/shepherd/.

Documentation

Documentation for the Shepherd is available on-line, as is documentation for most GNU software. You may also find more information about the Shepherd by running info shepherd.

Mailing lists

The guix-devel mailing list is used to discuss most aspects of the Shepherd, including development and enhancement requests.

Please report bugs to the bug-guix mailing list, which has an associated issue tracker.

Guix-commits receives notifications of commits to the version control repository.

Announcements about the Shepherd and most other GNU software are made on info-gnu (archive).

Security reports that should not be made immediately public can be sent to the guix-security private mailing list or to the maintainers.

Getting involved

Development of the Shepherd, and GNU in general, is a volunteer effort, and you can contribute. For information, please read How to help GNU. If you'd like to get involved, it's a good idea to join the discussion mailing list (see above).

Test releases
Trying the latest test release (when available) is always appreciated. Test releases of the Shepherd can be found at https://alpha.gnu.org/gnu/shepherd/ (via HTTP) and ftp://alpha.gnu.org/gnu/shepherd/ (via FTP).
Development

Anonymous checkout: git clone https://git.savannah.gnu.org/git/shepherd.git

You can also browse the Git repository with your web browser: https://git.savannah.gnu.org/cgit/shepherd.git

For additional information, please see the shepherd project page at savannah.gnu.org. Please join the mailing list for discussion.

Maintainer
The Shepherd is currently being maintained by Ludovic Courtès. Please use the mailing lists for contact.

Licensing

The Shepherd is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

History

The GNU Shepherd was formerly known as GNU dmd. dmd was initially developed by Wolfgang Jährling, with input from other GNU hackers. It was first released in 2003, making it one of the first init systems departing from the venerable System V approach. Its development was then closely related to the GNU Hurd, although it has always supported GNU/Linux as well.

After a looong period of freeze, it was revived in 2013. It saw its first positively-numbered release in December 2013. It has since been used as the init system (PID 1) of the Guix System Distribution.

In January 2016, GNU dmd was renamed to GNU Shepherd to avoid confusion with a same-named project.

GPL version 3