[package] name = "ai-server" version = "0.1.0" edition = "2024" [[bin]] name = "ai-server" path = "src/main.rs" [dependencies] # Shared tunnel, TLS, enrollment, private-file, and RON behavior. wg-app-link = { path = "../wg-app-link/server" } event-model = { path = "../event-model" } axum = { version = "0.8", features = ["json", "multipart"] } axum-server = { version = "0.8", features = ["tls-rustls"] } tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "sync", "time", "process", "io-util", "signal"] } tokio-stream = { version = "0.1", features = ["sync"] } tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } serde = { version = "1", features = ["derive"] } # Transcript pages and SSE must serialize identical bytes. The default parser changed # 1788546972.6030757 to ...0755, breaking cache comparisons. serde_json = { version = "1", features = ["float_roundtrip"] } ron = "0.12.2" clap = { version = "4", features = ["derive"] } anyhow = "1" thiserror = "2" sha2 = "0.11" rand = "0.10" base64 = "0.23" # The usage endpoint is polled infrequently, so a blocking client suffices. ureq = { version = "3", features = ["json"] } # Select a CryptoProvider explicitly because transitive dependencies enable two. rustls = "0.23" libc = "0.2.189" time = { version = "0.3", features = ["formatting"] } [dev-dependencies] tempfile = "3" tower = { version = "0.5", features = ["util"] }