[workspace] resolver = "2" exclude = ["vendor/object_store/out", "vendor/slatedb/out"] members = [ # "engine/packages/auth", "engine/packages/auth-jwt", "engine/packages/auth-policy", # "engine/packages/api-builder", "engine/packages/api-peer", # "engine/packages/api-public", "engine/packages/api-public-shim", # "engine/packages/api-public-openapi-gen", # "engine/packages/api-types", # "engine/packages/api-util", # "engine/packages/bootstrap", # "engine/packages/build-meta", # "engine/packages/cache", # "engine/packages/cache-purge", # "engine/packages/cache-result", "engine/packages/cli", "engine/packages/config", "engine/packages/cluster-config", "engine/packages/config-schema-gen", # "engine/packages/datacenter", "engine/packages/depot-worker", "engine/packages/depot-log", "engine/packages/depot-volume", "engine/packages/depot-fs-core", "engine/packages/topology", "engine/packages/keys", "engine/packages/depot-client", "engine/packages/state-machine", "engine/packages/state-machine-util", "engine/packages/object-store-util", "engine/packages/singleton-coordinator", "engine/packages/state-machine-ephemeral", "engine/packages/state-machine-durable", "engine/packages/durable-reconciler", "engine/packages/depot-types", # "engine/packages/sqlite-remote", "engine/packages/sqlite-embedded", "engine/packages/sqlite-embedded-filesystem", "engine/packages/sqlite-prefetch", "engine/packages/rivet-sqlite-types", "engine/packages/engine", # "engine/packages/env", "engine/packages/epoxy", # "engine/packages/error", # "engine/packages/error-macros", "engine/packages/guard", "engine/packages/guard-core", # "engine/packages/guard-core-old", # "engine/packages/logs", # "engine/packages/metrics", # "engine/packages/metrics-server", # "engine/packages/namespace", "engine/packages/outbound-guard", "engine/packages/pegboard", "engine/packages/pegboard-envoy", "engine/packages/pegboard-gateway", "engine/packages/pegboard-v2-migrator", "engine/packages/engine-context", # "engine/packages/postgres-util", "engine/packages/runtime", "engine/packages/service-manager", "engine/packages/telemetry", # "engine/packages/term", # "engine/packages/tracing-utils", # "engine/packages/types", # "engine/packages/universalpubsub", # "engine/packages/util", # "engine/packages/util-id", # "engine/packages/util-serde", # "engine/packages/version-management", # "engine/sdks/rust/data", "engine/sdks/rust/depot-protocol", "engine/sdks/rust/envoy-client", "engine/sdks/rust/envoy-protocol", "engine/sdks/rust/epoxy-protocol", "engine/sdks/rust/migrate-from-v2-protocol", "rivetkit-rust/packages/actor-persist", "rivetkit-rust/packages/client", "rivetkit-rust/packages/client-protocol", "rivetkit-rust/packages/engine-process", "rivetkit-rust/packages/inspector-protocol", "rivetkit-rust/packages/rivetkit", "rivetkit-rust/packages/rivetkit-core", "rivetkit-rust/packages/shared-types", "rivetkit-typescript/packages/rivetkit-napi", "rivetkit-typescript/packages/rivetkit-wasm", # "examples/ai-agent-rust", # "examples/chat-room-rust", # "examples/hello-world-rust", ] [workspace.package] version = "3.0.7" edition = "2024" authors = [ "Rivet Gaming, LLC " ] license = "Apache-2.0" homepage = "https://rivet.dev" repository = "https://github.com/rivet-dev/rivet-ee" [workspace.dependencies] anstyle = "1" anyhow = "1.0.82" arc-swap = "1.7.1" backtrace = "0.3.75" async-trait = "0.1" axum-test = "17" base64 = "0.22" ciborium = "0.2" tikv-jemallocator = { version = "0.6.1", default-features = false } tikv-jemalloc-sys = { version = "0.6.1", default-features = false } bytes = "1.6.0" crc32c = "0.6" console-subscriber = "0.4" dirs = "5.0.1" ed25519-dalek = { version = "2.2", features = [ "pkcs8", "rand_core", "zeroize" ] } foundationdb-tuple = "0.9.1" fs_extra = "1.3.0" futures = "0.3.30" futures-util = "0.3" h2 = "0.4.20" hashbrown = "0.17" hex = "0.4" http = "1.3.1" http-body = "1.0.0" http-body-util = "0.1.1" hyper-tungstenite = "0.30.0" imbl = { version = "7.0.2", features = ["serde"] } include_dir = "0.7.4" indoc = "2.0.5" itertools = "0.14.0" json5 = "0.4.1" jsonwebtoken = { version = "11", default-features = false, features = [ "aws_lc_rs" ] } lazy_static = "1.4" num-bigint = { version = "0.4", features = ["serde"] } libc = "0.2" lz4_flex = "0.11.3" md5 = "0.7.0" object_store = { version = "=0.14.2", default-features = false } parking_lot = "0.12" portpicker = "0.1" prometheus = "0.14" quote = "1.0" rand = "0.8" regex = "1.4" replace_with = "0.1.8" rpassword = "7.3" rustls-pemfile = "2.2.0" scc = "3.6.12" semver = "1.0.27" serde_bytes = "0.11.17" serde_html_form = "0.2.7" serde_yaml = "0.9.34" sha2 = "0.10" subtle = "2" tempfile = "3.13.0" testcontainers = "0.24" thiserror = "1.0.64" tokio-stream = "0.1.15" tokio-util = "0.7" tower = "0.5" tracing = "0.1.40" tracing-opentelemetry = "0.29" vergen-gitcl = "1.0.0" zeroize = { version = "1.8", features = [ "derive" ] } reqwest-eventsource = "0.6.0" [workspace.dependencies.xxhash-rust] version = "=0.8.15" features = [ "xxh3" ] [workspace.dependencies.rusqlite] version = "0.32.1" features = [ "bundled" ] [workspace.dependencies.tokio-tungstenite] version = "0.26.0" features = [ "rustls-tls-native-roots", "rustls-tls-webpki-roots" ] [workspace.dependencies.vergen] version = "9.0.4" features = [ "build", "cargo", "rustc" ] [workspace.dependencies.sentry] version = "0.45.0" default-features = false features = [ "anyhow", "backtrace", "contexts", "debug-images", "panic", "reqwest", "rustls", "tracing" ] [workspace.dependencies.windows] version = "0.58" features = [ "Win32", "Win32_Storage", "Win32_Storage_FileSystem", "Win32_System", "Win32_System_Console", "Win32_Security" ] [workspace.dependencies.hyper-util] version = "0.1.21" features = [ "full" ] [workspace.dependencies.rustls] version = "0.23.25" default-features = false features = [ "ring", "std", "logging" ] [workspace.dependencies.utoipa] version = "5.4.0" features = [ "uuid" ] [workspace.dependencies.axum] version = "0.8.9" features = [ "http2", "macros" ] [workspace.dependencies.axum-extra] version = "0.12.6" features = [ "query" ] [workspace.dependencies.tower-http] version = "0.6" features = [ "cors", "trace" ] [workspace.dependencies.serde_json] version = "1.0.128" features = [ "raw_value" ] [workspace.dependencies.nix] version = "0.30" default-features = false features = [ "fs", "user", "signal" ] [workspace.dependencies.chrono-tz] version = "0.10.4" [workspace.dependencies.croner] version = "2.2.0" [workspace.dependencies.chrono] version = "0.4.38" features = [ "now" ] [workspace.dependencies.clap] version = "4.3" features = [ "derive", "cargo" ] [workspace.dependencies.config] version = "0.14.0" default-features = false features = [ "async", "json", "yaml" ] [workspace.dependencies.hyper] version = "1.12.0" features = [ "server", "http1" ] [workspace.dependencies.indexmap] version = "2.0" features = [ "serde" ] [workspace.dependencies.ipnet] version = "2.10.1" features = [ "serde" ] [workspace.dependencies.moka] version = "0.12" features = [ "future" ] [workspace.dependencies.opentelemetry] version = "0.28" features = [ "trace", "metrics", "logs" ] [workspace.dependencies.opentelemetry-http] version = "0.28" [workspace.dependencies.opentelemetry-otlp] version = "0.28" features = [ "trace", "metrics", "logs", "grpc-tonic" ] [workspace.dependencies.opentelemetry_sdk] version = "0.28" features = [ "trace", "metrics", "logs" ] [workspace.dependencies.opentelemetry-semantic-conventions] version = "0.28" features = [ "semconv_experimental" ] [workspace.dependencies.proc-macro2] version = "1.0" features = [ "span-locations" ] [workspace.dependencies.reqwest] version = "0.12.22" default-features = false features = [ "json", "rustls-tls-native-roots", "rustls-tls-webpki-roots" ] [workspace.dependencies.schemars] version = "0.8.21" features = [ "url", "uuid1" ] [workspace.dependencies.serde] version = "1.0" features = [ "derive" ] [workspace.dependencies.strum] version = "0.26.3" features = [ "derive" ] [workspace.dependencies.syn] version = "2.0" features = [ "full", "extra-traits" ] [workspace.dependencies.url] version = "2.5.4" features = [ "serde" ] [workspace.dependencies.urlencoding] version = "2.1" [workspace.dependencies.uuid] version = "1.11.0" features = [ "v4", "serde" ] [workspace.dependencies.tokio] version = "1.44.0" features = [ "rt", "sync", "time", "macros", "io-util", "tracing" ] [workspace.dependencies.tokio-postgres] version = "0.7" features = [ "with-chrono-0_4" ] [workspace.dependencies.webpki-roots] version = "0.26" [workspace.dependencies.tracing-logfmt] version = "0.3" features = [ "ansi_logs" ] [workspace.dependencies.tracing-stackdriver] version = "0.10.0" default-features = false [workspace.dependencies.tracing-subscriber] version = "0.3" default-features = false features = [ "ansi", "fmt", "json", "env-filter" ] [workspace.dependencies.serde_bare] git = "https://github.com/rivet-dev/serde_bare" rev = "f63f155db7e0ab989255ee0d6991ff8eb9ebee25" version = "0.5.0" [workspace.dependencies.vbare] version = "0.2.0" [workspace.dependencies.vbare-compiler] version = "0.2.0" [workspace.dependencies.vbare-gen] version = "0.2.0" [workspace.dependencies.rivet-api-builder] path = "engine/packages/api-builder" [workspace.dependencies.rivet-auth-policy] path = "engine/packages/auth-policy" [workspace.dependencies.rivet-auth] path = "engine/packages/auth" [workspace.dependencies.rivet-auth-jwt] path = "engine/packages/auth-jwt" [workspace.dependencies.rivet-api-peer] path = "engine/packages/api-peer" [workspace.dependencies.rivet-api-public] path = "engine/packages/api-public" [workspace.dependencies.rivet-api-public-shim] path = "engine/packages/api-public-shim" [workspace.dependencies.rivet-api-public-openapi-gen] path = "engine/packages/api-public-openapi-gen" [workspace.dependencies.rivet-api-types] path = "engine/packages/api-types" [workspace.dependencies.rivet-api-util] path = "engine/packages/api-util" [workspace.dependencies.rivet-bootstrap] path = "engine/packages/bootstrap" [workspace.dependencies.rivet-build-meta] path = "engine/packages/build-meta" [workspace.dependencies.rivet-cache] path = "engine/packages/cache" [workspace.dependencies.rivet-cache-purge] path = "engine/packages/cache-purge" [workspace.dependencies.rivet-cache-result] path = "engine/packages/cache-result" [workspace.dependencies.rivet-cli] path = "engine/packages/cli" [workspace.dependencies.rivet-config] path = "engine/packages/config" [workspace.dependencies.rivet-config-schema-gen] path = "engine/packages/config-schema-gen" [workspace.dependencies.datacenter] path = "engine/packages/datacenter" [workspace.dependencies.rivet-singleton-coordinator] path = "engine/packages/singleton-coordinator" [workspace.dependencies.rivet-object-store-util] path = "engine/packages/object-store-util" [workspace.dependencies.rivet-state-machine-util] path = "engine/packages/state-machine-util" [workspace.dependencies.depot-log] path = "engine/packages/depot-log" [workspace.dependencies.depot-volume] path = "engine/packages/depot-volume" [workspace.dependencies.depot-worker] path = "engine/packages/depot-worker" [workspace.dependencies.sqlite-embedded] default-features = false path = "engine/packages/sqlite-embedded" version = "=3.0.7" [workspace.dependencies.sqlite-prefetch] path = "engine/packages/sqlite-prefetch" [workspace.dependencies.sqlite-remote] path = "engine/packages/sqlite-remote" [workspace.dependencies.sqlite_types] package = "rivet-sqlite-types" path = "engine/packages/rivet-sqlite-types" version = "=3.0.7" [workspace.dependencies.depot-client] path = "engine/packages/depot-client" [workspace.dependencies.depot-types] path = "engine/packages/depot-types" [workspace.dependencies.depot-fs-core] path = "engine/packages/depot-fs-core" [workspace.dependencies.rivet-topology] path = "engine/packages/topology" [workspace.dependencies.rivet-cluster-config] path = "engine/packages/cluster-config" [workspace.dependencies.rivet-engine] path = "engine/packages/engine" [workspace.dependencies.rivet-env] path = "engine/packages/env" [workspace.dependencies.epoxy] path = "engine/packages/epoxy" [workspace.dependencies.rivet-error] path = "engine/packages/error" version = "=3.0.7" [workspace.dependencies.rivet-error-macros] path = "engine/packages/error-macros" version = "=3.0.7" [workspace.dependencies.rivet-guard] path = "engine/packages/guard" [workspace.dependencies.rivet-guard-core] path = "engine/packages/guard-core" [workspace.dependencies.rivet-logs] path = "engine/packages/logs" [workspace.dependencies.rivet-metrics] path = "engine/packages/metrics" version = "=3.0.7" [workspace.dependencies.rivet-metrics-server] path = "engine/packages/metrics-server" [workspace.dependencies.namespace] path = "engine/packages/namespace" [workspace.dependencies.rivet-outbound-guard] path = "engine/packages/outbound-guard" [workspace.dependencies.pegboard] path = "engine/packages/pegboard" [workspace.dependencies.pegboard-v2-migrator] path = "engine/packages/pegboard-v2-migrator" [workspace.dependencies.migrate-from-v2-protocol] path = "engine/sdks/rust/migrate-from-v2-protocol" [workspace.dependencies.pegboard-envoy] path = "engine/packages/pegboard-envoy" [workspace.dependencies.pegboard-gateway] path = "engine/packages/pegboard-gateway" [workspace.dependencies.rivet-engine-context] path = "engine/packages/engine-context" [workspace.dependencies.rivet-postgres-util] path = "engine/packages/postgres-util" [workspace.dependencies.rivet-runtime] path = "engine/packages/runtime" [workspace.dependencies.rivet-service-manager] path = "engine/packages/service-manager" [workspace.dependencies.rivet-telemetry] path = "engine/packages/telemetry" [workspace.dependencies.rivet-term] path = "engine/packages/term" [workspace.dependencies.rivet-tracing-utils] path = "engine/packages/tracing-utils" [workspace.dependencies.rivet-types] path = "engine/packages/types" [workspace.dependencies.universalpubsub] path = "engine/packages/universalpubsub" [workspace.dependencies.rivet-util] path = "engine/packages/util" [workspace.dependencies.util] package = "rivet-util" path = "engine/packages/util" [workspace.dependencies.rivet-util-id] path = "engine/packages/util-id" default-features = false [workspace.dependencies.rivet-util-serde] path = "engine/packages/util-serde" version = "=3.0.7" [workspace.dependencies.rivet-version-management] path = "engine/packages/version-management" [workspace.dependencies.rivet-data] path = "engine/sdks/rust/data" [workspace.dependencies.rivet-state-machine-ephemeral] path = "engine/packages/state-machine-ephemeral" [workspace.dependencies.rivet-state-machine-durable] path = "engine/packages/state-machine-durable" [workspace.dependencies.rivet-state-machine] path = "engine/packages/state-machine" [workspace.dependencies.rivet-durable-reconciler] path = "engine/packages/durable-reconciler" [workspace.dependencies.rivet-keys] path = "engine/packages/keys" [workspace.dependencies.depot-protocol] path = "engine/sdks/rust/depot-protocol" [workspace.dependencies.rivet-envoy-client] path = "engine/sdks/rust/envoy-client" default-features = false version = "=3.0.7" [workspace.dependencies.rivet-envoy-protocol] path = "engine/sdks/rust/envoy-protocol" version = "=3.0.7" [workspace.dependencies.rivetkit-client-protocol] path = "rivetkit-rust/packages/client-protocol" version = "=3.0.7" [workspace.dependencies.rivetkit-client] path = "rivetkit-rust/packages/client" version = "=3.0.7" [workspace.dependencies.rivetkit-actor-persist] path = "rivetkit-rust/packages/actor-persist" version = "=3.0.7" [workspace.dependencies.rivetkit-inspector-protocol] path = "rivetkit-rust/packages/inspector-protocol" version = "=3.0.7" [workspace.dependencies.rivetkit] path = "rivetkit-rust/packages/rivetkit" version = "=3.0.7" [workspace.dependencies.rivetkit-core] path = "rivetkit-rust/packages/rivetkit-core" version = "=3.0.7" [workspace.dependencies.rivetkit-shared-types] path = "rivetkit-rust/packages/shared-types" version = "=3.0.7" [workspace.dependencies.rivetkit-engine-process] path = "rivetkit-rust/packages/engine-process" version = "=3.0.7" [workspace.dependencies.epoxy-protocol] path = "engine/sdks/rust/epoxy-protocol" [workspace.dependencies.rivet-alloc-count] path = "engine/packages/alloc-count" [profile.dev] overflow-checks = false # "line-tables-only" produces just the line-number DWARF needed for stack # traces, skipping variable/type info. Meaningfully faster debug builds # (~2 min per engine cross-compile) with no runtime cost. debug = "line-tables-only" lto = "off" [profile.dev.build-override] opt-level = 3 [profile.release] debug = false lto = "fat" codegen-units = 1 opt-level = 3 # Self-host bundles are rebuilt frequently while retaining release-grade # optimization. ThinLTO preserves cross-crate optimization without paying the # single-core, whole-program fat-LTO link on every engine change. [profile.self-host-release] inherits = "release" lto = "thin" codegen-units = 16 strip = "symbols" # Release-grade optimization with DWARF line info and no symbol stripping so # heaptrack can resolve native allocation backtraces during leak investigation. # Uses thin LTO and more codegen units to keep frames un-inlined and builds fast. [profile.profiling] inherits = "release" debug = 1 lto = "thin" codegen-units = 16 strip = false [profile.quick] inherits = "dev" debug = false # no debug info → faster link, smaller binary strip = "symbols" # strip what's left opt-level = 1 # cheap optimizations, still fast to compile panic = "abort" # drops unwinding tables codegen-units = 256 # max parallelism [patch.crates-io] slatedb = { path = "vendor/slatedb/out" } object_store = { path = "vendor/object_store/out" }