[workspace] resolver = "2" members = [ "crates/shared", "crates/executor-core", "crates/orchestrator-core", "crates/manager-core", "crates/picloud", "crates/picloud-manager", "crates/picloud-orchestrator", "crates/picloud-executor", ] [workspace.package] version = "0.3.0" edition = "2021" rust-version = "1.92" license = "MIT OR Apache-2.0" authors = ["PiCloud contributors"] repository = "https://github.com/fhamm/picloud" [workspace.dependencies] # Internal crates picloud-shared = { path = "crates/shared" } picloud-executor-core = { path = "crates/executor-core" } picloud-orchestrator-core = { path = "crates/orchestrator-core" } picloud-manager-core = { path = "crates/manager-core" } # Async + HTTP tokio = { version = "1.40", features = ["full"] } axum = "0.8" tower = "0.5" tower-http = { version = "0.6", features = ["trace", "cors"] } hyper = "1" # Serialization serde = { version = "1", features = ["derive"] } serde_json = "1" # Errors + logging thiserror = "1" anyhow = "1" tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] } # IDs + time uuid = { version = "1", features = ["v4", "serde"] } chrono = { version = "0.4", features = ["serde"] } # Async traits async-trait = "0.1" # Rhai scripting rhai = { version = "1.19", features = ["sync", "serde"] } # Postgres (manager-core only — others stay DB-free) sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "postgres", "uuid", "chrono", "json", "macros", "migrate"] } # Config figment = { version = "0.10", features = ["toml", "env"] } # HTTP client (for RemoteExecutorClient later) reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] } [workspace.lints.rust] unsafe_code = "forbid" [workspace.lints.clippy] all = { level = "warn", priority = -1 } pedantic = { level = "warn", priority = -1 } module_name_repetitions = "allow" missing_errors_doc = "allow" missing_panics_doc = "allow" doc_markdown = "allow" # API ergonomics: we deliberately take values by ownership for owned # inputs (e.g. ExecRequest) and accept Rhai's Box as-is. needless_pass_by_value = "allow" boxed_local = "allow" [profile.release] lto = "thin" codegen-units = 1 strip = "symbols" [profile.dev] debug = 1