[workspace] members = [ "crates/platform-config", "crates/service-clients", "crates/ai-service", "crates/extension-registry", "crates/orchestrator", "crates/control-center", "crates/control-center-ui", "crates/vault-service", "crates/detector", "crates/mcp-server", "crates/daemon", "prov-ecosystem/crates/daemon-cli", "prov-ecosystem/crates/machines", "prov-ecosystem/crates/encrypt", "prov-ecosystem/crates/backup", "prov-ecosystem/crates/observability", ] exclude = [ "syntaxis", "syntaxis/core", "prov-ecosystem/crates/syntaxis-integration", "prov-ecosystem/crates/audit", "prov-ecosystem/crates/valida", "prov-ecosystem/crates/runtime", "prov-ecosystem/crates/gitops", ] resolver = "2" [workspace.package] authors = ["Jesus Perez "] edition = "2021" license = "MIT" repository = "https://github.com/jesusperezlorenzo/provisioning" version = "1.0.11" [workspace.dependencies] # ============================================================================ # SHARED ASYNC RUNTIME AND CORE LIBRARIES # ============================================================================ async-trait = "0.1" futures = "0.3" tokio = { version = "1.49", features = ["full"] } tokio-util = "0.7" # ============================================================================ # SERIALIZATION AND DATA HANDLING # ============================================================================ chrono = { version = "0.4", features = ["serde"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" toml = "0.9" uuid = { version = "1.20", features = ["v4", "serde"] } # ============================================================================ # ERROR HANDLING # ============================================================================ anyhow = "1.0" thiserror = "2.0" # ============================================================================ # LOGGING AND TRACING # ============================================================================ log = "0.4" tracing = "0.1" tracing-appender = "0.2" tracing-subscriber = { version = "0.3", features = ["env-filter"] } # ============================================================================ # WEB SERVER AND NETWORKING # ============================================================================ axum = { version = "0.8", features = ["ws", "macros"] } hyper = "1.8" reqwest = { version = "0.13", features = ["json", "rustls"], default-features = false } tower = { version = "0.5", features = ["full"] } tower-http = { version = "0.6", features = [ "cors", "trace", "fs", "compression-gzip", "timeout", ] } # ============================================================================ # CLI AND CONFIGURATION # ============================================================================ clap = { version = "4.5", features = ["derive", "env"] } config = "0.15" # ============================================================================ # DATABASE AND STORAGE # ============================================================================ sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "sqlite", "chrono", "uuid"] } surrealdb = { version = "2.6", features = ["kv-mem", "protocol-ws", "protocol-http"] } # ============================================================================ # SECURITY AND CRYPTOGRAPHY # ============================================================================ aes-gcm = "0.10" argon2 = "0.5" base64 = "0.22" hmac = "0.12" jsonwebtoken = { version = "10.3", features = ["rust_crypto"] } rand = { version = "0.9", features = ["std_rng", "os_rng"] } ring = "0.17" sha2 = "0.10" # AWS SDK for KMS aws-config = "1" aws-credential-types = "1" aws-sdk-kms = "1" # ============================================================================ # VALIDATION AND REGEX # ============================================================================ regex = "1.12" validator = { version = "0.20", features = ["derive"] } # ============================================================================ # GRAPH ALGORITHMS AND UTILITIES # ============================================================================ petgraph = "0.8" # ============================================================================ # ADDITIONAL SHARED DEPENDENCIES # ============================================================================ # System utilities dirs = "6.0" # Filesystem operations notify = "8.2" walkdir = "2.5" # Statistics and templates statistics = "0.4" tera = "1.20" # Additional cryptography hkdf = "0.12" rsa = "0.9.10" zeroize = { version = "1.8", features = ["derive"] } # Additional security constant_time_eq = "0.4" subtle = "2.6" # Caching and storage redis = { version = "1.0", features = ["tokio-comp", "connection-manager"] } # Tower services tower-service = "0.3" tower_governor = "0.8" # Scheduling cron = "0.15" tokio-cron-scheduler = "0.15" # Policy engine cedar-policy = "4.8" # URL handling url = "2.5" # Icons and UI icondata = "0.7" leptos_icons = "0.7" # Image processing image = { version = "0.25", default-features = false, features = ["png"] } qrcode = "0.14" # Authentication hex = "0.4" lazy_static = "1.5" totp-rs = { version = "5.7", features = ["qr"] } webauthn-rs = "0.5" webauthn-rs-proto = "0.5" # Additional serialization serde-wasm-bindgen = "0.6" # Gloo utilities (for WASM) gloo-net = { version = "0.6", features = ["http", "websocket"] } gloo-storage = "0.3" gloo-timers = "0.3" gloo-utils = { version = "0.2", features = ["serde"] } # Plotting and canvas plotters = "0.3" plotters-canvas = "0.3" # WASM utilities console_error_panic_hook = "0.1" js-sys = "0.3" tracing-wasm = "0.2" wasm-bindgen-futures = "0.4" # Random number generation getrandom = { version = "0.4" } # ============================================================================ # TUI (Terminal User Interface) # ============================================================================ crossterm = "0.29" ratatui = { version = "0.30", features = ["all-widgets", "serde"] } # ============================================================================ # WASM AND FRONTEND DEPENDENCIES (for control-center-ui) # ============================================================================ leptos = { version = "0.8", features = ["csr"] } leptos_meta = { version = "0.8", features = ["default"] } leptos_router = { version = "0.8" } wasm-bindgen = "0.2" # ============================================================================ # DEVELOPMENT AND TESTING DEPENDENCIES # ============================================================================ assert_matches = "1.5" criterion = { version = "0.8", features = ["html_reports"] } mockito = "1" tempfile = "3.24" tokio-test = "0.4" # Additional caching and binary discovery lru = "0.16" parking_lot = "0.12" which = "8" yaml-rust = "0.4" humantime-serde = "1.1" # Metrics prometheus = "0.14" approx = "0.5" # Utilities xxhash-rust = { version = "0.8", features = ["xxh3"] } # ============================================================================ # RAG FRAMEWORK DEPENDENCIES (Rig) # ============================================================================ rig-core = "0.30" rig-surrealdb = "0.1" tokenizers = "0.22" # ============================================================================ # STRATUM ECOSYSTEM DEPENDENCIES (for RAG embeddings & LLM) # ============================================================================ moka = { version = "0.12", features = ["future"] } sled = "0.34" fastembed = "5.8" lancedb = "0.23" arrow = "=56" # ============================================================================ # INTERNAL WORKSPACE CRATES (Local path dependencies) # ============================================================================ platform-config = { path = "./crates/platform-config" } service-clients = { path = "./crates/service-clients" } rag = { path = "./crates/rag" } mcp-server = { path = "./crates/mcp-server" } ai-service = { path = "./crates/ai-service" } # ============================================================================ # PROV-ECOSYSTEM (Now members of workspace) # ============================================================================ daemon-cli = { path = "./prov-ecosystem/crates/daemon-cli" } machines = { path = "./prov-ecosystem/crates/machines" } encrypt = { path = "./prov-ecosystem/crates/encrypt" } backup = { path = "./prov-ecosystem/crates/backup" } observability = { path = "./prov-ecosystem/crates/observability" } init-servs = { path = "./prov-ecosystem/crates/init-servs" } # stratum-embeddings and stratum-llm are built in isolated Docker context for RAG # See: crates/rag/docker/Dockerfile stratum-embeddings = { path = "./stratumiops/crates/stratum-embeddings", features = ["openai-provider", "ollama-provider", "fastembed-provider", "memory-cache"] } stratum-llm = { path = "./stratumiops/crates/stratum-llm", features = ["anthropic", "openai", "ollama"] } # ============================================================================ # SECRETUMVAULT (Enterprise Secrets Management - optional) # ============================================================================ secretumvault = { path = "./secretumvault" } # ============================================================================ # WASM/WEB-SPECIFIC DEPENDENCIES # ============================================================================ web-sys = { version = "0.3", features = [ "console", "Window", "Document", "Element", "HtmlElement", "HtmlCanvasElement", "CanvasRenderingContext2d", "EventTarget", "Event", "DragEvent", "DataTransfer", "HtmlInputElement", "HtmlSelectElement", "HtmlTextAreaElement", "HtmlButtonElement", "HtmlDivElement", "Storage", "Location", "History", "Navigator", "ServiceWorkerRegistration", "ServiceWorker", "NotificationPermission", "Notification", "Headers", "Request", "RequestInit", "RequestMode", "Response", "AbortController", "AbortSignal", "WebSocket", "MessageEvent", "CloseEvent", "ErrorEvent", "Blob", "Url", "FileReader", "File", "HtmlAnchorElement", "MouseEvent", "TouchEvent", "KeyboardEvent", "ResizeObserver", "ResizeObserverEntry", "IntersectionObserver", "IntersectionObserverEntry", "MediaQueryList", "MediaQueryListEvent", "CredentialsContainer", "PublicKeyCredential", "PublicKeyCredentialCreationOptions", "PublicKeyCredentialRequestOptions", "AuthenticatorResponse", "AuthenticatorAttestationResponse", "AuthenticatorAssertionResponse", "Crypto", "SubtleCrypto", "CryptoKey", ] } # ============================================================================ # ADDITIONAL MISSING DEPENDENCIES (Not in original workspace) # ============================================================================ ed25519-dalek = "2.2" http-body-util = "0.1" # ============================================================================ # BYTES MANIPULATION # ============================================================================ bytes = "1.11" # ============================================================================ # HTTP AND PROTOCOL UTILITIES # ============================================================================ http = "1" # ============================================================================ # CONTAINER MANAGEMENT AND SSH # ============================================================================ bollard = "0.20" russh = "0.57" russh-keys = "0.49" # ============================================================================ # SECRETS MANAGEMENT # ============================================================================ age = "0.11" rusty_vault = "0.2.1" # ============================================================================ # ADDITIONAL DATA FORMAT SERIALIZATION # ============================================================================ serde_yaml = "0.9" # ============================================================================ # PATH AND SHELL UTILITIES # ============================================================================ shellexpand = "3.1" [workspace.metadata] description = "Provisioning Platform - Rust workspace for cloud infrastructure automation tools" # Profile configurations shared across all workspace members [profile.dev] codegen-units = 256 debug = true debug-assertions = true incremental = true lto = false opt-level = 0 overflow-checks = true panic = 'unwind' [profile.release] codegen-units = 1 lto = true opt-level = 3 panic = "abort" strip = "debuginfo" # Fast release profile for development [profile.dev-release] debug = true inherits = "release" lto = "thin" opt-level = 2 # Profile for benchmarks [profile.bench] debug = true inherits = "release"