Cargo Features

[dependencies]
garage = { version = "1.0.0", default-features = false, features = ["k2v", "lmdb", "sqlite", "consul-discovery", "kubernetes-discovery", "metrics", "telemetry-otlp", "syslog", "bundled-libs", "system-libs"] }
default = bundled-libs, k2v, lmdb, metrics, sqlite

These default features are set whenever garage is added without default-features = false somewhere in the dependency tree.

k2v default

Enables k2v of garage_api and garage_util

lmdb default

Database engines

Enables lmdb of garage_model

Affects convert_db::OpenLmdbOpt

sqlite default

Enables sqlite of garage_model

consul-discovery

Automatic registration and discovery via Consul API

Enables consul-discovery of garage_rpc

kubernetes-discovery

Automatic registration and discovery via Kubernetes API

Enables kubernetes-discovery of garage_rpc

metrics default = opentelemetry-prometheus, prometheus

Prometheus exporter (/metrics endpoint).

Enables metrics of garage_api

telemetry-otlp = opentelemetry-otlp

Exporter for the OpenTelemetry Collector.

syslog = syslog-tracing

Logging to syslog

bundled-libs default

NOTE: bundled-libs and system-libs should be treat as mutually exclusive;
exactly one of them should be enabled.

Use bundled libsqlite instead of linking against system-provided.

Enables bundled-libs of garage_db

system-libs

Link against system-provided libsodium and libzstd.

Enables use-pkg-config of kuska-sodiumoxide, system-libs of garage_block and garage_rpc

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

opentelemetry-prometheus metrics

Enables opentelemetry-prometheus ^0.10

opentelemetry-otlp telemetry-otlp?

Enables opentelemetry-otlp ^0.10

prometheus metrics
syslog-tracing syslog?