[package]
name = "llmtrace"
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
description = "Transparent proxy server for LLM API calls"
[features]
default = ["ml", "judge"]
ml = ["llmtrace-security/ml"]
judge = ["llmtrace-security/judge"]
cuda = ["llmtrace-security/cuda"]
metal = ["llmtrace-security/metal"]
[lib]
name = "llmtrace_proxy"
path = "src/lib.rs"
[[bin]]
name = "llmtrace-proxy"
path = "src/main.rs"
[dependencies]
llmtrace-core.workspace = true
llmtrace-storage = { workspace = true, features = ["clickhouse", "postgres", "redis_backend"] }
llmtrace-security.workspace = true
tokio.workspace = true
serde.workspace = true
serde_json.workspace = true
anyhow.workspace = true
tracing.workspace = true
chrono.workspace = true
uuid.workspace = true
async-trait.workspace = true
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
clap = { version = "4", features = ["derive", "env"] }
opentelemetry-proto = { version = "0.31", features = ["gen-tonic-messages", "trace"] }
prost = "0.14"
hex = "0.4"
sha2 = "0.10"
rand = "0.8"
aes-gcm = "0.10"
base64 = "0.22"
axum = "0.7"
tower-http = { version = "0.6", features = ["cors", "limit"] }
hyper = { version = "1", features = ["full"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "stream", "rustls-tls"] }
serde_yaml = "0.9"
dashmap = "6"
thiserror = "2"
bytes = "1"
http = "1"
http-body-util = "0.1"
futures-util = "0.3"
async-stream = "0.3"
tokio-stream = "0.1"
tokio-util = "0.7"
tonic = "0.14"
tonic-prost = "0.14"
prometheus = "0.14"
arc-swap = "1.9"
tempfile = "3"
utoipa = { version = "5", features = ["axum_extras"] }
utoipa-swagger-ui = { version = "8", features = ["axum"] }
[build-dependencies]
tonic-prost-build = "0.14"
[dev-dependencies]
tokio = { version = "1", features = ["full", "test-util"] }
axum = "0.7"
tower = "0.5"