[workspace] resolver = "2" members = [ "crates/vapora-backend", "crates/vapora-frontend", "crates/vapora-shared", "crates/vapora-agents", "crates/vapora-llm-router", "crates/vapora-mcp-server", "crates/vapora-tracking", "crates/vapora-worktree", "crates/vapora-knowledge-graph", "crates/vapora-analytics", "crates/vapora-swarm", "crates/vapora-telemetry", "crates/vapora-workflow-engine", "crates/vapora-cli", ] [workspace.package] version = "1.2.0" edition = "2021" rust-version = "1.75" authors = ["VAPORA Team"] license = "MIT OR Apache-2.0" repository = "https://github.com/vapora/vapora" homepage = "https://vapora.dev" keywords = ["multi-agent", "llm", "cloud-native", "orchestration"] categories = ["development-tools", "web-programming"] [workspace.dependencies] # Vapora internal crates vapora-shared = { path = "crates/vapora-shared" } vapora-agents = { path = "crates/vapora-agents" } vapora-llm-router = { path = "crates/vapora-llm-router" } vapora-worktree = { path = "crates/vapora-worktree" } vapora-knowledge-graph = { path = "crates/vapora-knowledge-graph" } vapora-analytics = { path = "crates/vapora-analytics" } vapora-swarm = { path = "crates/vapora-swarm" } vapora-telemetry = { path = "crates/vapora-telemetry" } vapora-workflow-engine = { path = "crates/vapora-workflow-engine" } # SecretumVault - Post-quantum secrets management secretumvault = { path = "../secretumvault", default-features = false, features = ["server", "surrealdb-storage", "openssl", "cedar"] } # Leptos ecosystem (CSR-only for frontend) leptos = { version = "0.8.12" } leptos_router = { version = "0.8.9" } leptos_meta = { version = "0.8.5" } # Web Framework (Backend) axum = "0.8.6" tower = "0.5.2" tower-http = { version = "0.6.6", features = ["fs", "cors", "trace", "compression-full"] } # Async runtime tokio = { version = "1.48", features = ["rt-multi-thread", "macros", "fs", "net", "sync"] } futures = "0.3.31" async-trait = "0.1.89" # Serialization serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" toml = "0.9" serde_yaml = { version = "0.9" } # Error handling thiserror = "2.0.17" anyhow = "1.0.100" # HTTP http = "1" reqwest = { version = "0.12.24", features = ["json", "rustls-tls"] } reqwasm = "0.5.0" # Logging and tracing log = "0.4.28" env_logger = "0.11" tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] } # WASM support wasm-bindgen = "0.2.105" wasm-bindgen-futures = "0.4.55" wasm-bindgen-test = "0.3" serde-wasm-bindgen = "0.6.5" console_error_panic_hook = "0.1.7" console_log = "1" js-sys = "0.3.82" web-sys = { version = "0.3.82", features = ["Clipboard", "Window", "Navigator", "Permissions", "MouseEvent", "Storage", "console", "File"] } # Gloo ecosystem gloo-timers = { version = "0.3", features = ["futures"] } gloo-net = { version = "0.6.0" } # Utilities rand = "0.9" rand_core = { version = "0.6", features = ["getrandom"] } getrandom = { version = "0.2", features = ["std", "js"] } uuid = { version = "1.18", features = ["v4", "serde", "js"] } chrono = { version = "0.4", features = ["serde"] } regex = "1.12.2" hex = "0.4.3" base64 = { version = "0.22" } # Configuration dotenv = "0.15.0" once_cell = "1.21.3" # CLI clap = { version = "4.5", features = ["derive", "env"] } colored = "2.1" comfy-table = "7.1" # TLS Support (native tokio-rustls, no axum-server) rustls = { version = "0.23" } rustls-pemfile = { version = "2.2" } tokio-rustls = { version = "0.26" } # Authentication & Authorization jsonwebtoken = { version = "10.2", features = ["rust_crypto"] } argon2 = { version = "0.5" } oauth2 = { version = "5.0" } tower-sessions = { version = "0.14" } tower-cookies = { version = "0.11" } time = { version = "0.3", features = ["serde"] } # Database sqlx = { version = "0.8.6", features = ["runtime-tokio-rustls", "postgres", "sqlite", "chrono", "uuid", "migrate"] } # Note: SurrealDB will be added when available in workspace surrealdb = "2.3" # Message Queue # Note: async-nats will be added when available in workspace async-nats = "0.45" # LLM Agent Framework & RAG rig-core = "0.15" # Embeddings: Use provider APIs (Claude, OpenAI, Gemini, Ollama) instead of fastembed # - rig-core integrates with all major providers # - Routing through vapora-llm-router for optimal provider selection # - Phase 3: Implement embedding service using provider APIs # Cryptography aes-gcm = { version = "0.10" } sha2 = { version = "0.10" } # Metrics & Observability prometheus = { version = "0.14" } opentelemetry = { version = "0.22", features = ["trace", "metrics"] } opentelemetry-jaeger = { version = "0.21", features = ["rt-tokio"] } opentelemetry_sdk = { version = "0.22", features = ["rt-tokio"] } tracing-opentelemetry = "0.23" # File system glob = "0.3.3" walkdir = "2.5" tempfile = { version = "3.23" } notify = { version = "8.2.0", default-features = false, features = ["macos_fsevent"] } ignore = "0.4" # CLI support dialoguer = "0.12" console = "0.16" indicatif = "0.18" # Async compression async-compression = { version = "0.4", features = ["gzip", "tokio"] } # Utility cfg-if = "1.0" paste = "1.0.15" typed-builder = "0.23" shellexpand = "3.1" semver = "1.0" pathdiff = "0.2" dashmap = "5.5" parking_lot = "0.12" # Testing mockall = "0.13" wiremock = "0.6" axum-test = "18.2" mockito = "0.31" criterion = { version = "0.5", features = ["async_tokio"] } # Proc macros syn = { version = "2.0", features = ["full"] } quote = "1.0" proc-macro2 = "1.0" [profile.release] codegen-units = 1 lto = true opt-level = "z" [profile.dev] opt-level = 0 debug = true [profile.test] opt-level = 0