Tenzir uses CMake as build system with a C++23 compiler.
Manual
Section titled “Manual”Compile
Section titled “Compile”Clone the repository:
git clone --recursive https://github.com/tenzir/tenzircd tenzirEnsure all dependencies are available, then configure and build using a preset:
cmake --list-presets # discover available presetscmake --preset <preset-name>cmake --build --preset <preset-name>For example, to build a release on macOS:
cmake --preset macos-clang-releasecmake --build --preset macos-clang-releaseFor custom configurations without presets:
cmake -B build -G Ninjacmake --build buildRun unit tests via CTest:
ctest --test-dir buildRun integration tests via tenzir-test:
cd testuvx tenzir-testInstall
Section titled “Install”Install Tenzir system-wide:
cmake --install buildOptions:
--prefix /path/to/prefix— custom install location--strip— remove debug symbols--component Runtime— install only runtime files, not development headers
Delete the build tree to start fresh:
rm -rf buildThis avoids configuration glitches when switching build types.
Docker
Section titled “Docker”The Dockerfile provides multiple build targets.
Build the default image:
docker build -t tenzir/tenzir .Build the node image (runs tenzir-node as entrypoint):
docker build -t tenzir/tenzir-node --target tenzir-node .Build the development image with all build-time dependencies for creating custom plugins:
docker build -t tenzir/tenzir-dev --target development .We use Nix for reproducible builds on Linux and macOS. The flake provides all dependencies:
nix developcmake --preset nix-clang-releasecmake --build --preset nix-clang-releaseFor pre-built dependencies, configure the Tenzir binary cache:
nix run nixpkgs#cachix -- use tenzirYou can also delegate the entire build to Nix with nix build .#tenzir-de, but
this doesn’t support incremental builds.
To build static binaries on Linux:
nix develop .#tenzir-static.uncheckedcmake --preset nix-static-releasecmake --build --preset nix-static-releaseDependencies
Section titled “Dependencies”| Required | Dependency | Version | Description |
|---|---|---|---|
| ✓ | C++ Compiler | C++23 required | Tenzir is tested to compile with GCC >= 14.0 and Clang >= 19.0. |
| ✓ | CMake | >= 3.30 | Cross-platform tool for building, testing and packaging software. |
| ✓ | CAF | >= 1.1.0 | Implementation of the actor model in C++. (Bundled as submodule.) |
| ✓ | OpenSSL | Utilities for secure networking and cryptography. | |
| ✓ | FlatBuffers | >= 2.0.8 | Memory-efficient cross-platform serialization library. |
| ✓ | Boost | >= 1.83.0 | Required as a general utility library. |
| ✓ | Apache Arrow | >= 18.0.0 | Required for in-memory data representation. Must be built with Compute, Filesystem, S3, Zstd and Parquet enabled. For the gcs plugin, GCS needs to be enabled. |
| ✓ | re2 | Required for regular expression evaluation. | |
| ✓ | yaml-cpp | >= 0.6.2 | Required for reading YAML configuration files. |
| ✓ | simdjson | >= 4.0.0 | Required for high-performance JSON parsing. (Bundled as submodule.) |
| ✓ | spdlog | >= 1.5 | Required for logging. |
| ✓ | fmt | >= 10.0.0 | Required for formatted text output. |
| ✓ | xxHash | >= 0.8.0 | Required for computing fast hash digests. |
| ✓ | robin-map | >= 0.6.3 | Fast hash map and hash set using robin hood hashing. (Bundled as subtree.) |
| ✓ | fast_float | >= 3.2.0 | Required for parsing floating point numbers. (Bundled as submodule.) |
| ✓ | libbacktrace | >= 1.0 | Required for generating stack traces. (Only on Linux.) |
| ✓ | libmaxminddb | >= 1.8.0 | Required for the geoip context. |
| ✓ | reproc++ | >= v14.2.5 | Required for subprocess control. |
| libpcap | Required for building the pcap plugin. | ||
| librdkafka | Required for building the kafka plugin. | ||
| http-parser | Required for building the web plugin. | ||
| cppzmq | Required for building the zmq plugin. | ||
| clickhouse-cpp | >= fbd7945 | Required for building the clickhouse plugin. (Bundled as submodule.) | |
| pfs | Required for the processes and sockets operators on Linux. | ||
| Protocol Buffers | >= 1.4.1 | Required for building the velociraptor plugin. | |
| gRPC | >= 1.51 | Required for building the velociraptor plugin. | |
| rabbitmq-c | Required for building the rabbitmq plugin. | ||
| yara | >= 4.4.0 | Required for building the yara plugin. | |
| poetry | Required for building the Python bindings. | ||
| Doxygen | Required to build documentation for libtenzir. | ||
| Pandoc | Required to build the manpage for Tenzir. | ||
| bash | >= 4.0.0 | Required to run the integration tests. | |
| bats | >= 1.8.0 | Required to run the integration tests. | |
| uv | >= 0.7.2 | Required to run the python operator. |
The minimum specified versions reflect those used in CI and manual testing. Older versions may still work.
Every release includes an SBOM in SPDX format listing all dependencies and their versions: