[package] name = "claw-store" version = "0.3.0" edition = "2021" [[bin]] name = "claw-store" path = "src/main.rs" [dependencies] clap = { version = "4", features = ["derive"] } serde = { version = "1", features = ["derive"] } toml = "0.8" tokio = { version = "1", features = ["full"] } sysinfo = "0.30" anyhow = "1" tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } chrono = { version = "0.4", features = ["serde"] } axum = { version = "0.7", features = ["macros"] } tower-http = { version = "0.5", features = ["cors", "fs"] } tokio-stream = "0.1" serde_json = "1" # v0.2.0 — flock(2) wrapper for atomic+locked manifest writes # (manifest.rs). Already a transitive dep; declaring it directly # makes the call site obvious. libc = "0.2" # v0.2.0 — sibling-tempfile + rename for atomic manifest persistence. # Was previously dev-dep only; promoted to main. tempfile = "3" # v0.11.1 — cluster membership via scuttlebutt gossip + phi-accrual failure # detection. Wraps in cluster/gossip.rs. UDP transport, keyed KV state per # node, seed_nodes bootstrap from [[cluster.peers]] config. chitchat = "0.11" # v0.11 — QUIC transport for peer RPC (Phase 1c). UDP-based; runs on a # separate port from chitchat gossip. TLS 1.3 by default; we wire mTLS # against a fleet root CA in cluster/transport.rs. quinn = { version = "0.11", default-features = false, features = ["runtime-tokio", "rustls-ring"] } # v0.23 — TLS 1.3 provider driving quinn's crypto. Pinned to the ring # provider so a single CryptoProvider is installed process-wide. rustls = { version = "0.23", default-features = false, features = ["ring"] } # v0.13 — X.509 cert generation for the fleet CA + per-node leaf certs. # Used both by production bootstrap (writes PEM to /etc/claw-store/tls/) # and by tests (in-memory ephemeral CA). rcgen = { version = "0.13", features = ["pem"] } [dev-dependencies] tempfile = "3" tower = { version = "0.5", features = ["util"] } http-body-util = "0.1"