Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Cargo feature matrix

Important

This page describes the v13 prerelease source, and its dependency examples pin the published 13.0.0-alpha.4 exactly: Cargo never selects a prerelease on its own, and a plain "13.0.0-alpha.4" would also accept later alphas (see the v13 migration guide). The v12 line reached end of life on 16 October 2026; see the release record. Commit Cargo.lock for reproducible builds, and use path dependencies only when intentionally testing checkout-local changes.

This page is the public feature contract for the 20 packages in the v13 release inventory: the 16 published 12.x packages plus the rullst-privacy, rullst-supervision, rullst-media and rullst-labs candidates, first published in the 13.0.0-alpha.1 prerelease. The package manifests remain the machine-readable source of truth. The matrix explains the behavior those names select in this v13 source and makes the default build visible before an application adopts optional integrations.

Cargo features are additive across a dependency graph. An application can disable a package’s defaults at the dependency edge, but it cannot disable a feature enabled by another dependency. Inspect the final selection with:

cargo tree -e features

The release gates compile every package with no default features, every public umbrella feature in isolation, representative domain-package boundaries, and the complete workspace with all features. The isolated umbrella list, and this page’s umbrella table and default features, are checked automatically against rullst/Cargo.toml, so a newly added public feature cannot silently escape the matrix. See check-feature-boundaries.sh for the exact individual checks.

v13 prerelease privacy additions

The v13 candidate adds rullst-privacy as an optional release package. These features are absent from published 12.x releases and first shipped in the 13.0.0-alpha.1 prerelease, which requires an explicit version opt-in. They do not change default dependencies or select application policies automatically.

Umbrella featureStandalone privacy featureContract
privacyNoneIndependent empty base
privacy-ageage-assuranceProportional age-policy contracts
privacy-challenge-tokenschallenge-tokensAuthenticated server challenge transport
privacy-sqlitesqliteShared-local age replay protection
privacy-postgrespostgresAge replay protection on one authoritative PostgreSQL database
privacy-consentconsentPurpose/version choices and effective withdrawal
privacy-consent-sqliteconsent-sqliteShared-local consent state
privacy-consent-postgresconsent-postgresNew candidate for shared consent across application hosts; independent of age assurance

See the privacy package guide for initialization, runtime roles, data minimization, backup/failover obligations and acceptance.

The local email-login candidate adds Auth email-login-sqlite and email-login-postgres, with facade auth-email-login-sqlite / auth-email-login-postgres. These optional paths reuse authoritative recovery accounts and opaque sessions; they do not enable email login on accounts or replace tenant/MFA policy. Hosted source/package admission remains pending; see the email-login contract.

The scoped API-token candidate adds Auth api-tokens-sqlite / api-tokens-postgres and facade auth-api-tokens-sqlite / auth-api-tokens-postgres. They enable the corresponding recovery backend only; email login, JWT and OAuth remain independent. See the API-token contract for current admission and boundaries.

Umbrella crate: rullst

The v13 prerelease private-storage candidate adds Core/facade storage-multipart, which selects storage-s3, bounded XML parsing and checkpoint key zeroization. It enables no database, queue or default feature. See private multipart uploads for server-mediated parts, encrypted resumable checkpoints, cleanup responsibilities and admission.

The default rullst dependency enables no feature: since 13.0.0-alpha.3 it compiles the HTTP runtime without the ORM, a SQLx driver or Core’s durable SQLite queue, so a database-free application builds no database code. Up to 13.0.0-alpha.2 the defaults were orm, drivers-all and queue-sqlite. Select what the application uses:

[dependencies]
rullst = { version = "=13.0.0-alpha.4", default-features = false, features = ["strict-sqlite", "queue-sqlite"] }

Each strict-* backend enables orm; drivers-all enables orm with all three drivers. orm itself adds no SQLx driver: it compiles, but Orm::init and Server::with_db then fail at startup for every URL scheme whose driver no other enabled feature happens to add (queue-sqlite, for example, adds only SQLite), with an error that names the feature to enable. default-features = false keeps the same graph on 13.0.0-alpha.2, whose defaults still included the drivers.

FeatureDefaultEnables
ormnorullst-orm and Core’s ORM integration, without a SQLx driver; pair it with drivers-all or one strict-* backend
drivers-allnoorm plus the SQLite, PostgreSQL and MySQL/MariaDB SQLx drivers in the ORM and Core, and in Studio and Nexus when studio or nexus is enabled
orm-mongodbnoorm plus the MongoDB document adapter
orm-duckdbnoorm plus the in-process DuckDB analytics adapter
orm-tursonoorm plus typed Turso-primary CRUD/query, parameterized remote libSQL SQL over Hrana HTTP v3, transactions, reversible checked migrations, and a persistent offline fallback
orm-surrealdbnoorm plus SurrealDB HTTP document and bounded graph adapters
orm-scoutnoorm plus bounded Meilisearch, Elasticsearch and Algolia Scout HTTP adapters
orm-pgvectornoorm plus typed pgvector SQLx values; use with strict-postgres for the supported live query contract
orm-qdrantnoorm plus bounded dense-vector Qdrant HTTP operations and offline fallback
orm-redisnoorm plus namespaced Redis Hash, Set and Sorted Set operations
queue-sqlitenoCore’s durable SQLite queue backend
storage-s3nov13 candidate: Core’s bounded AWS S3 and Cloudflare R2 object operations and signed GET URLs; see private object storage
storage-multipartnov13 candidate: storage-s3 plus server-mediated multipart uploads with bounded XML parsing and checkpoint key zeroization; see private multipart uploads
nexusnoThe generated Nexus administration interface, without the AI assistant (since 13.0.0-alpha.4)
nexus-ainov13: nexus plus the AI assistant at /nexus/chat (rullst-nexus/ai), which adds rullst-ai; without it /nexus/chat answers 404 with a notice naming this feature
nexus-tznov13: nexus plus NexusTimeZone::named, so DateTimeUtc form values are shown and read in a named IANA time zone with its daylight-saving rules; adds jiff with the system zoneinfo database and a bundled fallback
studionoStudio plus Core’s Studio integration marker
authnoAuthentication, sessions, passkeys, and RBAC helpers from rullst-auth
auth-jwtnoauth plus the strict application-issued JWT policy
auth-sqlitenoauth-jwt plus bounded shared SQLite JWT revocation and passkey device lifecycle state
auth-passkey-postgresnoOptional v13 account/session-bound PostgreSQL passkey ceremony candidate; host credential-counter CAS remains required
auth-sessions-sqlitenov13 candidate: auth plus the SQLite account registry, opaque sessions and session inventory (Auth recovery-sqlite); see session management
auth-sessions-postgresnov13 candidate: auth plus the PostgreSQL account registry, opaque sessions and session inventory (Auth recovery-postgres)
auth-email-login-sqlitenov13 candidate: auth plus email login over the SQLite recovery accounts and sessions; see the email-login contract
auth-email-login-postgresnov13 candidate: auth plus email login over the PostgreSQL recovery accounts and sessions
auth-api-tokens-sqlitenov13 candidate: auth plus scoped API tokens over the SQLite recovery backend; see the API-token contract
auth-api-tokens-postgresnov13 candidate: auth plus scoped API tokens over the PostgreSQL recovery backend
account-mail-sqlitenoauth and mail plus the SQLite recovery store and the account_mail delivery bridge; see account mail
account-mail-postgresnoauth and mail plus the PostgreSQL recovery store and the account_mail delivery bridge
mailnorullst-mail with HTTP/offline transports and no SMTP dependency
mail-sqlitenomail plus bounded shared-local SQLite recipient suppression and provider-event replay evidence
mail-postgresnov13 candidate: shared PostgreSQL suppression with keyed identifiers, authoritative dispatch checks and independent quotas
mail-smtpnomail plus the optional SMTP transport
mail-aws-sesnomail plus native SES v2 delivery signed by the official AWS SDK
messagingnoNative bounded broker-neutral messaging contracts and the deterministic process-local broker
messaging-sqlitenomessaging plus fixed-schema durable local SQLite publication, lease, retry/DLQ, ACK and idempotency state
messaging-schedules-postgresnov13 candidate: encrypted PostgreSQL recurring-publication outbox and fenced relay into an explicitly selected broker; no default SQLite/ORM
messaging-webhooksnov13 candidate: encrypted shared-local SQLite outgoing outbox, immutable HTTPS destination, signed exact bytes, fenced retries and minimized terminal inspection
messaging-orm-outboxnomessaging and orm plus the static relational outbox-to-broker relay; the publish/ACK crash window remains at-least-once
messaging-redisnov13 candidate: messaging plus the Redis Streams broker with fenced delivery indexes; enables no ORM, mail, cache or Core queue; see Redis Streams messaging
privacynov13 candidate: the independent empty rullst-privacy base; the privacy-* features are listed in the privacy additions
privacy-agenov13 candidate: privacy plus proportional age-policy contracts
privacy-challenge-tokensnov13 candidate: privacy-age plus authenticated server challenge transport
privacy-sqlitenov13 candidate: privacy-age plus shared-local age replay protection
privacy-postgresnov13 candidate: privacy-age plus age replay protection on one authoritative PostgreSQL database
privacy-consentnov13 candidate: privacy plus purpose/version choices and effective withdrawal
privacy-consent-sqlitenov13 candidate: privacy-consent plus shared-local consent state
privacy-consent-postgresnov13 candidate: privacy-consent plus shared PostgreSQL consent state
mailernoCompatibility alias for mail-smtp; prefer mail-smtp in new manifests
queue-redisnoRedis dependency and Core’s Redis queue backend
cache-redisnoRedis dependency and Core’s Redis cache backend
redisnoConvenience alias enabling queue-redis, cache-redis and orm-redis
scheduler-tznov13: Scheduler::task_in_tz and Scheduler::deferrable_task_in_tz, cron tasks (and deferral windows) in a named IANA time zone with a documented daylight-saving rule; adds jiff with the system zoneinfo database and a bundled fallback
oauthnoOAuth2/OIDC providers from rullst-connect with its Axum integration (rullst-connect/rullst): the AuthCallback extractor and the local mock IdP router
oauth-sqlitenooauth plus bounded encrypted shared-local token-generation state with exact SQLite compare-and-swap, and the v13 SQLite login-challenge store (SqliteChallengeStore)
oauth-postgresnov13: oauth plus the PostgreSQL login-challenge store (PostgresChallengeStore) over the application’s pool
oauth-mysqlnov13: oauth plus the MySQL/MariaDB login-challenge store (MySqlChallengeStore) over the application’s pool
oauth-mocknov13: oauth plus rullst-connect/mock, so empty or mock_* provider credentials build an offline mock provider that signs in a fixed mock user; enable it only in development and test builds
ainoProvider-agnostic AI clients and local safeguards from rullst-ai
ai-sql-memorynoai plus tenant-aware durable chat memory for SQLite, PostgreSQL, MySQL, and MariaDB
capitalnoProvider-neutral billing contracts, the Stripe and experimental InfinitePay adapters, webhooks and analytics from rullst-capital
capital-actixnocapital plus the Actix Web adapter for the canonical signed-webhook verifier
capital-quota-sqlnocapital and orm plus atomic shared resource quotas for SQLite, PostgreSQL, MySQL, and MariaDB
capital-webhook-sqlnocapital and orm plus bounded durable webhook replay/event claims for SQLite, PostgreSQL, MySQL, and MariaDB
capital-pdfnocapital plus bounded validated native invoice PDF rendering
capital-mailnocapital-pdf plus Mail’s payment-bound HTML/PDF attachment delivery bridge
securitynoRASP/WAF and application-security primitives from rullst-security
security-redisnosecurity plus the atomic Redis rate limiter
iotnoIoT models, frame helpers, and signed OTA verification from rullst-iot
telemetrynoOpenTelemetry dependencies and Core’s OTLP integration
strict-postgresnoorm with the concrete PostgreSQL pool/backend selected
strict-mysqlnoorm with the concrete MySQL pool/backend selected when PostgreSQL is not also selected
strict-sqlitenoorm with the concrete SQLite pool/backend selected when PostgreSQL and MySQL are not also selected

The three strict-* backend features are supported as single selections; each enables only its own SQLx driver. Feature unification can activate more than one; the current deterministic precedence is PostgreSQL, then MySQL, then SQLite. Do not depend on that precedence as backend negotiation. Select one strict backend in an application, or select none and keep drivers-all to use SQLx Any with all three drivers.

Shared-local SQLite composition profile

A bounded single-host application may compose the following umbrella features over one file-backed SQLite URL:

[dependencies]
rullst = { version = "=13.0.0-alpha.4", default-features = false, features = [
  "auth-sqlite",
  "capital-quota-sql",
  "mail-sqlite",
  "messaging-sqlite",
  "oauth-sqlite",
  "queue-sqlite",
] }

The stores use distinct fixed table namespaces. Initialize/check them sequentially, keep application readiness false until every required component is healthy, and reuse exactly the same URL, quotas, namespaces, and keys after restart. Close every handle before file-level backup or restore. The dedicated facade_recovery test proves restart, idempotency, encrypted-secret plaintext absence, queue recovery, aggregate readiness, and isolated fail-closed corruption for this exact profile.

Sharing the file is not a cross-domain transaction or a multi-host design. The host still owns permissions, encryption-key custody, a consistent whole-file backup procedure, recovery drills, contention policy, and domain authorization. Prefer separate databases when failure isolation or write throughput is more important than simple local operation.

Runtime and data crates

rullst-core

Default features: none.

FeatureEnables
ormOptional rullst-orm and SQLx support, including Artisan and database-backed feature flags; it adds no SQLx driver
drivers-allorm plus the ORM’s SQLite, PostgreSQL and MySQL/MariaDB drivers
queue-sqliteSQLx-backed durable SQLite queues without enabling the full ORM facade
queue-redisRedis-backed queues
cache-redisRedis-backed cache storage
redisConvenience alias for both Redis queue and cache backends
scheduler-tzv13: Scheduler::task_in_tz and Scheduler::deferrable_task_in_tz for cron tasks (and deferral windows) in a named IANA time zone (system zoneinfo, bundled jiff database as fallback)
storage-s3v13 candidate: bounded AWS S3 and Cloudflare R2 object operations and signed GET URLs
storage-multipartv13 candidate: storage-s3 plus server-mediated multipart uploads with bounded XML parsing and checkpoint key zeroization
studioIntegration marker used by the umbrella Studio boundary; it adds no dependency by itself
telemetryOpenTelemetry tracing and OTLP export dependencies
strict-postgresorm plus the ORM PostgreSQL backend selection
strict-mysqlorm plus the ORM MySQL backend selection
strict-sqliteorm plus the ORM SQLite backend selection

Core’s process-local Radar and span collector do not require telemetry. That feature is specifically for OpenTelemetry/OTLP integration. The rullst.client v1 codec and bounded #[server_function] transport are available without a feature flag; only the explicit generated route exists on native targets, while the same annotated function becomes its Wasm caller. Identity, authorization and tenant policy remain application layers.

rullst-orm

No default feature (13.0.0-alpha.2 and earlier defaulted to drivers-all). With no strict-* feature, public pool and database aliases use SQLx Any, which opens only the drivers compiled in; without any, Orm::init fails with an error naming the feature to enable. The workspace and the umbrella crate depend on the ORM with default-features = false and forward drivers-all or a strict-* backend explicitly.

FeatureEnables
drivers-allThe SQLite, PostgreSQL and MySQL/MariaDB SQLx drivers
redisRedis query cache plus bounded namespaced Hash, Set and Sorted Set datastore operations
mongodbOfficial MongoDB driver plus typed document CRUD, identifier inventory, encrypted recovery participation and offline fallback
duckdbBundled DuckDB client plus parameterized, bounded analytics queries
tursoDirect official Hrana HTTP v3 transport, typed primary CRUD/query facade, parameterized SQL, atomic batches, reversible checksummed migrations, and a persistent SQLite-compatible offline fallback
surrealdbSurrealDB HTTP document CRUD, identifier inventory, encrypted recovery participation and bounded read-only ISO GQL; no embedded SDK
scout-httpBounded Meilisearch, Elasticsearch and Algolia adapters with deterministic offline fallbacks; Meilisearch also has a live container contract
pgvectorTyped pgvector SQLx values and parameterized L2/cosine/inner-product helpers; the live contract also selects strict-postgres
qdrantBounded dense-vector collection/upsert/delete/cosine query operations over HTTP with offline fallback
aipgvector plus the generated save_with_embedding for #[orm(embedding_for = "...")] models; the application also depends on rullst-ai
strict-postgresThe PostgreSQL driver plus concrete PostgreSQL pool, database, query-result, and query paths
strict-mysqlThe MySQL driver plus concrete MySQL paths when PostgreSQL is not also selected
strict-sqliteThe SQLite driver plus concrete SQLite paths when PostgreSQL and MySQL are not also selected

The strict backend selection rules and precedence are the same as the umbrella crate. Each strict-* feature enables its own SQLx driver and selects concrete public types and query paths; on 13.0.0-alpha.2 and earlier, disable the ORM defaults to keep the other drivers out of the graph.

The Polyglot features expose capability-specific APIs under rullst_orm::polyglot; they do not participate in a shared cross-backend transaction. The base deterministic document store and the MongoDB/SurrealDB adapters implement DocumentInventory for an application-operated bounded snapshot/restore contract; it does not supply online isolation or managed backup. Turso can additionally be selected explicitly by #[orm(backend = "turso")] and the blank/API scaffold. See the Polyglot Persistence guide.

rullst-orm-macros

Default features: none. #[derive(Orm)] uses a fail-closed structured parser: unknown/duplicate options, missing persisted targets, conflicting relations, unsafe identifiers, and SQLx mappings that generated persistence cannot honor are compile errors. The exact derive grammar and its raw soft-delete-expression boundary are defined in the packaged crate README and the SST.

FeatureEnables
runtime-driver-codecsEnum codecs follow the ORM runtime’s selected SQLx drivers; rullst-orm enables it
runtime-feature-gatesv13 candidate: Redis and embedding APIs are emitted or omitted at expansion time from the forwarded redis/ai features instead of the application’s own features; rullst-orm enables it
redisv13 candidate: forwarded by rullst-orm/redis; emits the Redis cache, hash and event code under runtime-feature-gates
aiv13 candidate: forwarded by rullst-orm/ai; emits save_with_embedding under runtime-feature-gates
strict-postgresCompatibility marker matching the ORM backend vocabulary; no macro expansion changes
strict-mysqlCompatibility marker matching the ORM backend vocabulary; no macro expansion changes
strict-sqliteCompatibility marker matching the ORM backend vocabulary; no macro expansion changes

rullst-connect

Default features: none. Provider clients and framework-independent OAuth/OIDC types remain available without a web-framework adapter.

FeatureEnables
axumAxum callback extractors and the local mock IdP router
actixActix Web callback extractors
leptosFramework-independent callback extractor module for Leptos integration; no Leptos runtime dependency
rullstConvenience integration boundary that enables axum
retryRetry-aware HTTP client behavior using reqwest-middleware and reqwest-retry
reqwest-middlewareThe optional middleware dependency alone; prefer retry for retry behavior
axum-sessionAxum plus a ten-minute, one-active-challenge tower-sessions state/PKCE/OIDC-nonce transaction and callback extractor
sqliteFile-backed shared-local encrypted token snapshots with persisted quota, restart recovery and exact generation compare-and-swap; remote refresh leases, key custody and multi-host operation remain application concerns. v13: also the SQLite login-challenge store over the application’s SqlitePool
postgresv13: the PostgreSQL login-challenge store over the application’s PgPool (DELETE … RETURNING consumption)
mysqlv13: the MySQL/MariaDB login-challenge store over the application’s MySqlPool (SELECT … FOR UPDATE then DELETE in one transaction)
mockDeterministic offline provider modules outside test builds

rullst-messaging

Default features: none. The deterministic process-local broker, versioned envelope, idempotency, consumer groups, leases, retry, dead-letter, and purge contracts are available without optional dependencies. The only remote broker adapter is the v13 Redis Streams candidate (13.0.0-alpha.1 prerelease); other remote brokers are not implemented and have no placeholder features.

FeatureEnables
sqliteFixed-schema durable local broker with serialized SQLite writes and immutable plaintext or explicit AES-256-GCM content profiles; restart/corruption/rotation/tamper/two-instance evidence is local, while metadata visibility, key custody and remote replication/failover remain explicit boundaries
orm-outboxStatic bridge from the relational rullst-orm outbox to one configured broker topic, with exact replay after the publish-before-ACK crash window; worker operations and remote atomicity remain application boundaries
redis-streamsv13 candidate: standalone Redis Streams broker with Rullst-owned fenced delivery indexes; see Redis Streams messaging
schedules-postgresv13 candidate: encrypted PostgreSQL recurring-publication outbox and fenced relay into a MessageBroker; enables neither SQLite nor ORM
webhooksv13 candidate: sqlite plus one immutable approved HTTPS destination, HMAC-SHA256 signing, bounded retry/dead-letter state, cancellation and terminal retention

rullst-iot

Default feature: std.

FeatureEnables
stdStandard-library support in serialization and Ed25519 dependencies; disabling it makes the crate no_std + alloc
experimental-simulatorsDeterministic MQTT formatting, HSM, and PQC fixtures; not live transports, hardware-backed keys, or production PQC

rullst-capital

Default feature: axum.

FeatureEnables
axumAxum middleware for the canonical bounded signed-webhook verifier
actixActix Web middleware for the same verifier; it does not enable Axum when selected directly
quota-sqlDurable idempotent shared quota accounting over SQLite, PostgreSQL, MySQL, and MariaDB; schema setup/migrations and authoritative membership/tier state remain application-owned
webhook-sqlBounded durable provider-scoped payload/event claims over SQLite, PostgreSQL, MySQL, and MariaDB, including a caller-owned transaction path; cross-system effects and reconciliation remain application-owned
invoice-pdfBounded paginated A4 invoice PDF with embedded WinAnsi or a validated caller-supplied TTF/OTF; payment/mail orchestration is separate

rullst-mail

Default features: none. HTTP mail providers remain available without SMTP.

FeatureEnables
mail-smtpLettre-based SMTP transport
aws-sesOfficial AWS SES v2 SDK, regional SigV4, temporary/rotating credential providers and native attachments/CID; AWS account readiness and inbox delivery remain external
capital-invoiceCapital’s native invoice PDF plus the final-payment-bound delivery bridge; durable outbox claiming remains application-owned
sqliteFile-backed shared-local suppression state with exact provider-event replay binding and immutable quotas; webhook authentication, encryption and multi-host replication remain application-owned
postgresv13 candidate: namespaced suppression on one authoritative writable PostgreSQL database; independent of SQLite. See shared mail suppression for initialization, runtime grants, retention and pending admission

rullst-auth

Default features: none.

FeatureEnables
oauthOptional rullst-connect OAuth2/OIDC integration and re-exports
jwtApplication-issued JWT claims, key rotation, and revocation-store policy
sqlitejwt plus bounded file-backed shared JWT revocation and passkey device lifecycle state
recovery-sqliteSQLite account registry, recovery and opaque sessions (SqlRecoveryStore); the v13 candidate adds session inventory/logout
recovery-postgresThe same recovery store on PostgreSQL
passkey-postgresv13 candidate: shared account/session-bound PostgreSQL passkey ceremonies
email-login-sqlitev13 candidate: recovery-sqlite plus email login over its accounts and sessions; see the email-login contract
email-login-postgresv13 candidate: recovery-postgres plus email login
api-tokens-sqlitev13 candidate: recovery-sqlite plus scoped API tokens; see the API-token contract
api-tokens-postgresv13 candidate: recovery-postgres plus scoped API tokens

The umbrella crate exposes jwt and sqlite as auth-jwt and auth-sqlite (auth-sqlite also enables auth-jwt), recovery-* as auth-sessions-*, passkey-postgres as auth-passkey-postgres, and the email-login and API-token features as auth-email-login-* and auth-api-tokens-*; each enables auth. account-mail-* also selects recovery-*. The umbrella does not forward Auth’s oauth; its own oauth feature adds rullst-connect directly.

rullst-security

Default features: none.

FeatureEnables
redis-rate-limitAtomic namespaced Redis fixed-window limiter plus its explicit offline mock mode; CI/release run the independent-client contract against a digest-pinned Redis service

The umbrella crate exposes this as security-redis, which also enables security.

rullst-ai

Default features: none. Provider clients, prompt inspection and PII masking are always available.

FeatureEnables
sql-memorySqlChatMemory: tenant-aware durable chat memory for SQLite, PostgreSQL, MySQL and MariaDB

The umbrella crate exposes this as ai-sql-memory, which also enables ai.

Dashboard crates

rullst-nexus enables drivers-all and ai by default, and rullst-studio enables drivers-all and queue-sqlite. Disable their defaults to select one backend (and, for Nexus, to leave out the AI assistant and rullst-ai):

CrateFeatureEnables
rullst-nexusdrivers-allAll three SQLx drivers in Core and ORM (default)
rullst-nexusstrict-postgresPostgreSQL selection in Core and ORM
rullst-nexusstrict-mysqlMySQL selection in Core and ORM
rullst-nexusstrict-sqliteSQLite selection in Core and ORM
rullst-nexusaiThe AI assistant at /nexus/chat and rullst-ai (default); the rullst facade enables it only with nexus-ai
rullst-nexustzv13: NexusTimeZone::named for DateTimeUtc form values in a named IANA time zone (system zoneinfo, bundled jiff database as fallback)
rullst-studiodrivers-allAll three SQLx drivers in Core and ORM (default)
rullst-studioqueue-sqliteCore’s durable SQLite queue backend (default)
rullst-studiostrict-postgresPostgreSQL selection in Core and ORM
rullst-studiostrict-mysqlMySQL selection in Core and ORM
rullst-studiostrict-sqliteSQLite selection in Core and ORM
rullst-studioremoteThe standalone rullst-studio binary’s remote-projects mode (see production monitoring); the binary requires it

Use the same single-selection rule described for rullst-orm.

v13 prerelease candidate packages

rullst-supervision, rullst-media and rullst-labs are in the v13 release inventory and were first published in the 13.0.0-alpha.1 prerelease. They have no umbrella features; depend on them directly. None has default features.

CrateFeatureEnables
rullst-supervisionexamTyped exam sessions, collection categories and browser/capture observations
rullst-supervisionparentalCourse/window parental restriction policies
rullst-supervisionanalysisexam plus bounded camera-presence/audio-activity adapter contracts
rullst-supervisionsqliteexam and parental plus the shared-local SQLite store
rullst-mediabunnyBunny Stream adapter, signatures, bounded HTTP and the browser upload module
rullst-mediasqliteShared-local durable assets, leased operations and the application service
rullst-medias3Experimental S3-compatible object storage (AWS S3, Cloudflare R2, MinIO): presigned upload and playback of the original, no transcoding
rullst-labssqliteEncrypted shared-local exercise and job storage with leases, cancellation and retention
rullst-labsreceipt-signingReceipt signing for the application-owned runner controller

Packages without optional features

These packages have no public optional Cargo features:

PackageAlways-available scope
rullst-macrosCore procedural macros
cargo-rullstCLI commands, generators, auditing, deployment helpers and the Experimental cargo rullst green; its internal maintainer-tools feature only builds the repository’s sync-badges tool and is not part of the installed CLI

No optional feature does not mean that a provider is contacted automatically. External integrations still require explicit runtime configuration and use the documented deterministic offline behavior for empty or mock_* credentials.

Selection recipes

Minimal HTTP runtime (from 13.0.0-alpha.3 the defaults are empty, so default-features = false changes nothing there):

rullst = { version = "=13.0.0-alpha.4", default-features = false }

SQLite application with the ORM, every SQLx driver and the SQLite queue, which were the defaults up to 13.0.0-alpha.2 and must be named since alpha.3:

rullst = { version = "=13.0.0-alpha.4", features = ["orm", "drivers-all", "queue-sqlite"] }

PostgreSQL application with explicit domain integrations:

rullst = {
    version = "=13.0.0-alpha.4",
    default-features = false,
    features = ["strict-postgres", "auth", "security", "telemetry"]
}

Embedded IoT model without the standard library:

rullst-iot = { version = "=13.0.0-alpha.4", default-features = false }

Experimental IoT fixtures are deliberately separate:

rullst-iot = {
    version = "=13.0.0-alpha.4",
    default-features = false,
    features = ["experimental-simulators"]
}