nav.groups.intro

Feature Flags

The full feature flag inventory, dependency implications, and selection guide.

Feature Flags

behest follows the additive-only feature flag policy: every feature is off unless explicitly enabled, and removing a feature is a breaking change. Pick the smallest set of features that covers your use case; the default feature is tls-rustls and nothing else.

Naming conventions

  • Library features are named after the underlying dependency: redis, nats, qdrant, mongodb, surrealdb, openai, anthropic.
  • TLS stacks are mutually exclusive: tls-rustls (default) or tls-native. Switching requires an explicit opt-out of the default.
  • Aggregator features turn on a coherent bundle: full, storage-all, rag-all, queue-all.

Default

FeatureDescription
tls-rustlsDefault TLS stack. Pulls in rustls for HTTP clients and any TLS-using backends.

Provider adapters

FeatureDescription
openaiThe OpenAI-compatible chat and embedding adapters (OpenAiChatAdapter, OpenAiEmbeddingAdapter). Also enables the provider.openai.* factory kinds.
anthropicThe Anthropic Messages API chat adapter (AnthropicChatAdapter). Also enables the provider.anthropic.chat factory kind.

Storage backends

FeatureDescription
redisRedis-backed store support; also enables RedisRuntimeEventStore, RedisRuntimeStreamAdapter, and RedisSessionDataStore.
redis-clusterRedis Cluster support; implies redis.
sqlx-postgresSQLx PostgreSQL store backend.
sqlx-mysqlSQLx MySQL store backend.
sqlx-sqliteSQLx SQLite store backend.
mongodbMongoDB session store backend.
surrealdbSurrealDB session store backend.
object_storeObject storage backend (AWS S3 compatible) for ArtifactStore.
storage-allEnables redis + sqlx-postgres + sqlx-mysql + sqlx-sqlite + mongodb + surrealdb. Intentionally does not enable object_store.

RAG

FeatureDescription
ragCore RAG context adapter (no extra deps). Enables the rag module.
qdrantQdrant vector store backend for embeddings.
tantivyTantivy full-text backend.
rag-allEnables rag + qdrant + tantivy.

Queues

FeatureDescription
queueCore EventPublisher trait; enables the queue module.
natsNATS JetStream publisher.
queue-allEnables queue + nats + redis.

Observability

FeatureDescription
otelOpenTelemetry tracing integration.

Aggregator

FeatureDescription
fullAn opinionated full profile: openai + anthropic + redis + redis-cluster + nats + sqlx-postgres + mongodb + surrealdb + otel + rag-all + queue-all + object_store. Intentionally does not enable sqlx-mysql or sqlx-sqlite.

Selection guide

The matrix below maps common use cases to a feature set. Add more only when needed.

Use caseFeature set
Local exploration, no network(no extra features beyond tls-rustls)
OpenAI chat onlyopenai
OpenAI chat + embeddingsopenai
Multi-provideropenai + anthropic
Production with sessions in Postgressqlx-postgres
Production with sessions in MongoDBmongodb
Event publishing through NATSqueue + nats
RAG over a vector storerag + qdrant
Distributed event logredis or nats + otel
Full demo / self-contained showcasefull

Mutually exclusive combinations

Only one TLS stack at a time:

behest = { version = "0.4", default-features = false, features = ["tls-native", "openai", "redis"] }

Do not enable tls-rustls together with tls-native; the build will fail with a duplicate-dependency error.

Cargo metadata

To inspect the resolved feature set:

cargo tree -p behest -e features --features full

This prints the full feature graph as it would be activated with --features full, showing which dependencies are pulled in by which feature.

Related components

Edit this page on GitHub →