tt tries to offer a valid alternative to systemd for PID 1 and service management. It uses the supervision to manage long running programs (deamons), log everything to files (no binary log interface) and provides an easy to use command line interface.
Inheriting s6-rc feature, the services must be compiled before being able to run. This is one of the biggest differences with the current service managers, which instead are based on runtime services.
tt is designed to run on both desktops and servers, and does not target embedded devices; if memory and space are constrained (e.g. you're configuring a router), then the use of s6 configured ad-hoc for that machine is recommended.
- Support for different types of services: oneshot, deamons and bundles
- Predictable dependencies at build time
- Asynchrounus start of the services (no run levels)
- Log everything into files, no syslog needed for deamons
- Low footprint
- Target desktop and servers
- Conditional dependencies for complex services (such as web apps)
- Provides sane defaults
- Prioritize usability
tt depends on the following libraries:
You can install them using your package manager.
To build tt a working C++ compiler is required. Meson will take care of the rest:
$ meson build $ ninja -C build
tt test suite uses catch2 header-only library. If this dependency is not found on the system, meson will download a copy to use in the local repository. To run the tt test suite, execute the following commands:
$ meson -Dtests=enabled build $ ninja -C build test
Feel free to contribute by opening a Pull Request! Have a look at Github Issues for the current development tasks.
Formatting your changes
tt follows the Google C++ Style
Guide and uses
clang-format to apply this style. If you have
clang-format installed, run
the following command to format your changes:
$ ninja -C build clang-format