In short, when writing a daemon or a service, we have the "muscle" of the application ‒ whatever we write the daemon for. And we have a whole lot of infrastructure around that: logging, command line parsing, configuration, to name a few. While there are Rust libraries for all that, it requires a non-trivial amount of boilerplate code to bridge all this together.
Spirit aims to be this bridge.
It takes care of things like
- signal handling and the application lifecycle
- combining multiple pieces of configuration together with command line overrides
- it allows for reloading the configuration at runtime
- application metrics
In short, it leverages the existing crates ecosystem to provide developers with a batteries-included approach to writing daemons. You provide the application and we give you the tools needed to create a production-ready daemon with little effort, while still letting you bend the framework to suit your specific use-case when necessary.