Sandglass is a tool for versioning of configuration files. It is designed to eliminate problems of existing solutions while keeping their benefits. In addition, it brings some new and useful features like synchronization with remote server and integration with other management and configuration infrastructure tools.

The tool is primarily designed for Fedora and Red Hat Enterprise Linux distributions, but the interface is designed to be easily extended to support other distributions and package managers.


The source codes are available under GNU General Public License 3.


The project was developed as a Bachelor's thesis at Faculty of Information Technology, Brno University of Technology. Now it will be run under Fedora Project.


If you have some questions or ideas, feel free to contact me.

Jan Včelák

Sandglass design

The main concept is shown in a figure below. Sandglass provides CLI interface to invoke user operations (local, ssh). This interface is also used to invoke operations based on package manager events and periodic events. QMF and D-Bus intrface is provided for easy integration of Sandglass into other configuration management tools.

A concept of operations within the Sandglass.

Git is used as the versioning backend. It was chosen because of its distributiveness, high performance, and security. Separation of git into a bunch of small tools makes the operations with git internal objects easy, flexible, and powerful.

Frequently Asked Questions

Why Sandglass supports only Git as its versioning backend?

There is no benefit of supporting multiple versioning backends. Sandglass provides easy-to-use command line tools for versioning control. You do not have to be familiar with any versioning system.

What about versioning system metadata? Please, do not store anything in the directory with configuration.

All necessary data of Sandglass are stored in compliancee with Fedora Packaging Guidelines (and Filesystem Hierarchy Standard) in /var/lib/sandglass. Directories with configuration files are not polluted by metadata of versioning system.

What is a Matahari Agent?

You should check Matahari Project Homepage. Sandglass Matahari Agent exposes Sandglass interface as a QMF model to qpid bus. This interface can be then used by other infrastructure tools. Some information about this can be also found on Fedora feature site of Matahari Based Fedora Management and Configuration Infrastructure (FMCI).

Are there any similar projects?

Yes, there are. Take a look at cfvers (very old) and etckeeper (quite new and useful). And I believe that there are some more.