[package]
name = "anyllm_proxy"
description = "HTTP proxy translating Anthropic Messages API to OpenAI Chat Completions"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true

[dependencies]
anyllm_translate = { path = "../translator", version = "0.9.7" }
anyllm_client = { path = "../client", version = "0.9.7" }
anyllm_batch_engine = { path = "../batch_engine", version = "0.9.7" }
anyllm_providers = { path = "../providers", version = "0.9.7", features = ["runtime-catalog"] }
axum = { version = "0.8", features = ["ws", "multipart"] }
tokio = { version = "1", features = ["full"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "stream", "native-tls", "http2", "multipart"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
futures = "0.3"
tokio-stream = "0.1"
tower = "0.5"
url = "2"
tracing = "0.1"
tiktoken-rs = "0.9"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
uuid = { version = "1", features = ["v4"] }
toml = "1.0.7"
indexmap = { version = "2.13.0", features = ["serde"] }
bytes = "1.11.1"
subtle = "2"
sha2 = "0.10"
hmac = "0.12"
rusqlite = { version = "0.32", features = ["bundled"] }
httpdate = "1"
dashmap = "6"
getrandom = "0.3"
aws-sigv4 = { version = "1.4", features = ["sign-http"] }
aws-credential-types = "1.2"
aws-smithy-runtime-api = "1"
base64 = "0.22"
hex = "0.4"
moka = { version = "0.12", features = ["future", "sync"] }
serde_yaml = "0.9"
jsonwebtoken = "10"
ipnetwork = "0.20"
zeroize = "1"
crc32fast = "1"
chrono = { version = "0.4", features = ["serde"] }

[features]
## Enables BashTool and ReadFileTool in the builtin tool registry.
## These tools execute arbitrary shell commands and read arbitrary files as the
## proxy process user. Do NOT enable in production without sandboxing.
dangerous-builtin-tools = []
redis = ["dep:redis"]
qdrant = ["dep:qdrant-client"]
otel = [
    "opentelemetry",
    "opentelemetry_sdk",
    "opentelemetry-otlp",
    "tracing-opentelemetry",
]

[dependencies.opentelemetry]
version = "0.31"
optional = true

[dependencies.opentelemetry_sdk]
version = "0.31"
optional = true

[dependencies.opentelemetry-otlp]
version = "0.31"
default-features = false
features = ["trace", "http-proto", "reqwest-client"]
optional = true

[dependencies.tracing-opentelemetry]
version = "0.32"
optional = true

[dependencies.redis]
version = "0.27"
features = ["tokio-comp", "connection-manager"]
optional = true

[dependencies.qdrant-client]
version = "1"
optional = true

[dev-dependencies]
pretty_assertions = "1"
reqwest = { version = "0.12", default-features = false, features = ["json", "native-tls", "multipart"] }
tokio = { version = "1", features = ["full"] }
tempfile = "3"

[package.metadata.deb]
name = "anyllm-proxy"
section = "net"
priority = "optional"
depends = "libc6 (>= 2.31)"
maintainer-scripts = "../../packaging"
conf-files = ["/etc/default/anyllm-proxy"]
extended-description = """\
HTTP proxy that accepts Anthropic Messages API and OpenAI Chat Completions \
requests, translates between formats, and forwards to any supported backend. \
Supports streaming SSE, tool calling, virtual key management, and cost tracking."""
assets = [
    ["target/release/anyllm_proxy", "/usr/bin/anyllm-proxy", "755"],
    ["../../packaging/anyllm-proxy.service", "/lib/systemd/system/anyllm-proxy.service", "644"],
    ["../../packaging/anyllm-proxy.default", "/etc/default/anyllm-proxy", "640"],
]
