Cargo Features

[dependencies]
tenuo = { version = "0.1.0-beta.11", default-features = false, features = ["control-plane", "data-plane", "python", "python-extension", "server", "http-client", "cel"] }

============================================================================
Feature Flags for Deployment Flexibility
============================================================================

default = control-plane, data-plane

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

control-plane default

Control Plane - for the central authority service

Required by tenuo, tenuo-control and tenuo-orchestrator binaries

data-plane default

Data Plane - for edge agents and verifiers

Required by tenuo, tenuo-authorizer, tenuo-orchestrator and tenuo-worker binaries

python python-extension? = pyo3

Python bindings

Affects tenuo::python

python-extension = python

Enables extension-module of pyo3 ^0.24.1

Python bindings (optional)
Note: extension-module must NOT be here - it goes in the final cdylib (tenuo-python)
abi3-py38 allows building without linking Python at compile time

server = axum, reqwest, tokio, tower, tracing, tracing-subscriber

Server features (adds HTTP/gRPC + structured logging dependencies)
Includes reqwest for control plane heartbeat functionality

Affects tenuo::heartbeat

Required by tenuo-authorizer and tenuo-control binaries

http-client = reqwest

HTTP client (for demo agents that call remote services)

Required by the tenuo-orchestrator binary

cel = cel-interpreter, moka

CEL (Common Expression Language) support for advanced constraints Adds cel-interpreter and moka (cache) dependencies

Affects cel::compile, cel::evaluate, cel::evaluate_with_value_context, cel::clear_cache, cel::cache_size, cel::create_context

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.

Note: Add "http-client" feature to enable remote authorizer mode
============================================================================
Dependencies
============================================================================

reqwest http-client? server?

Enables reqwest ^0.11

HTTP client (optional - only needed for demo binaries)

cel-interpreter cel?

Enables cel-interpreter

CEL expression evaluation (optional - reduces dependencies for most users)

moka cel?

Enables moka

Caching for CEL compiled programs (optional - only with CEL)

pyo3 python? python-extension?

Enables pyo3 ^0.24.1

tokio server?

Enables tokio

Server dependencies (optional)

axum server?
tower server?

Enables tower ^0.4

tracing server?
tracing-subscriber server?