[package] name = "llm-proxy" version = "0.1.0" edition = "2024" description = "Unified LLM proxy gateway supporting OpenAI, Gemini, DeepSeek, and Grok with token tracking and cost calculation" authors = ["newkirk"] license = "MIT OR Apache-2.0" repository = "" [dependencies] # ========== Web Framework & Async Runtime ========== axum = { version = "0.8", features = ["macros", "ws"] } tokio = { version = "1.0", features = ["rt-multi-thread", "macros", "net", "time", "signal", "fs"] } tower = "0.5" tower-http = { version = "0.6", features = ["trace", "cors", "compression-gzip", "fs"] } # ========== HTTP Clients ========== reqwest = { version = "0.12", default-features = false, features = ["json", "stream", "rustls-tls"] } async-openai = { version = "0.33", default-features = false, features = ["_api", "chat-completion"] } tiktoken-rs = "0.9" # ========== Database & ORM ========== sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite", "macros", "migrate", "chrono"] } # ========== Authentication & Middleware ========== axum-extra = { version = "0.12", features = ["typed-header"] } headers = "0.4" # ========== Configuration Management ========== config = "0.13" dotenvy = "0.15" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" toml = "0.8" # ========== Logging & Monitoring ========== tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] } # ========== Multimodal & Image Processing ========== base64 = "0.21" image = { version = "0.25", default-features = false, features = ["jpeg", "png", "webp"] } mime = "0.3" mime_guess = "2.0" # ========== Error Handling & Utilities ========== anyhow = "1.0" thiserror = "1.0" bcrypt = "0.15" chrono = { version = "0.4", features = ["serde"] } uuid = { version = "1.0", features = ["v4", "serde"] } futures = "0.3" async-trait = "0.1" async-stream = "0.3" reqwest-eventsource = "0.6" once_cell = "1.19" regex = "1.10" rand = "0.8" # ========== Rate Limiting & Circuit Breaking ========== governor = "0.6" [dev-dependencies] tokio-test = "0.4" mockito = "1.0" tempfile = "3.10" assert_cmd = "2.0" insta = "1.39" anyhow = "1.0" [profile.release] opt-level = 3 lto = true codegen-units = 1 strip = true panic = "abort"