Files
proxy/Cargo.toml
Sienna Meridian Satterwhite ad5c7f0afb feat(cluster): add iroh-gossip dependencies and cluster config schema
Add iroh v0.96, iroh-gossip v0.96, blake3, hex, and rand v0.9 to
Cargo.toml. Define ClusterConfig, DiscoveryConfig, BandwidthClusterConfig,
and ModelsConfig in config.rs with serde defaults for gossip port (11204),
broadcast interval (1s), meter window (30s), and peer discovery methods
(k8s/bootstrap).

Signed-off-by: Sienna Meridian Satterwhite <sienna@sunbeam.pt>
2026-03-10 23:38:20 +00:00

95 lines
2.4 KiB
TOML

[package]
name = "sunbeam-proxy"
version = "0.1.0"
edition = "2021"
[lib]
name = "sunbeam_proxy"
path = "src/lib.rs"
[dependencies]
# Pingora with rustls backend (pure Rust TLS, no BoringSSL C build)
pingora = { version = "0.8", features = ["rustls"] }
pingora-proxy = { version = "0.8", features = ["rustls"] }
pingora-core = { version = "0.8", features = ["rustls"] }
pingora-http = "0.8"
pingora-cache = { version = "0.8", features = ["rustls"] }
# HTTP header constants
http = "1"
# Config
serde = { version = "1", features = ["derive"] }
toml = "0.8"
# Async
tokio = { version = "1", features = ["full"] }
futures = "0.3"
async-trait = "0.1"
pin-project-lite = "0.2"
# Structured logging + OTEL
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["json", "env-filter"] }
tracing-opentelemetry = "0.28"
opentelemetry = { version = "0.27", features = ["trace"] }
opentelemetry_sdk = { version = "0.27", features = ["rt-tokio"] }
opentelemetry-otlp = { version = "0.27", features = ["http-proto", "reqwest-client"] }
serde_json = "1"
anyhow = "1"
# DDoS detection (KNN classifier)
clap = { version = "4", features = ["derive"] }
fnntw = "0.4"
bincode = "1"
rustc-hash = "2"
# Lock-free Arc swapping for hot-reload (scanner model)
arc-swap = "1"
# Reverse DNS for bot IP verification
dns-lookup = "2"
# Prometheus metrics
prometheus = "0.13"
# Request IDs
uuid = { version = "1", features = ["v4"] }
# Static file serving and body rewriting
bytes = "1"
regex = "1"
# Auth subrequests
reqwest = { version = "0.12", features = ["rustls-tls", "blocking"], default-features = false }
# Rustls crypto provider — must be installed before any TLS init
rustls = { version = "0.23", features = ["aws-lc-rs"] }
# K8s watcher for cert/config hot-reload
kube = { version = "3", features = ["runtime", "client"] }
k8s-openapi = { version = "0.27", features = ["v1_35"] }
libc = "0.2"
# Cluster gossip (iroh QUIC + HyParView/PlumTree)
iroh = "0.96"
iroh-gossip = { version = "0.96", features = ["net"] }
blake3 = "1"
hex = "0.4"
rand = "0.9"
[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }
proptest = "1"
tempfile = "3"
[[bench]]
name = "scanner_bench"
harness = false
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true