[workspace]
resolver = "2"
members = [
    "ek-base",
    "ek-benchmark",
    "ek-cli",
    "ek-computation",
    "ek-db",
    "ek-ggml",
]
default-members = ["ek-cli"]

[workspace.package]
version = "0.1.0"
edition = "2024"
authors = ["Expert-Kit Team"]
license = "LGPL-3.0"
readme = "README.md"
repository = "https://github.com/expert-kit/expert-kit"

[workspace.dependencies]
# Internal dependencies
ek-base = { path = "ek-base" }
ek-benchmark = { path = "ek-benchmark" }
ek-cli = { path = "ek-cli" }
ek-computation = { path = "ek-computation" }
ek-db = { path = "ek-db" }
ek-ggml = { path = "ek-ggml" }

# External dependencies (alphabetical order)
actix-http = "3.10.0"
actix-web = "4.10.2"
async-channel = "2.3.1"
async-trait = "0.1.88"
bindgen = "0.72"
bytes = "1.10.1"
clap = { version = "4.5.31", features = ["derive"] }
cmake = "0.1"
config = "0.15.11"
criterion = { version = "0.6.0", features = ["html_reports"] }
dashmap = "6.1.0"
diesel = { version = "2.2.9", features = [
    "postgres",
    "serde_json",
    "r2d2",
    "uuid",
    "chrono",
] }
diesel-async = { version = "0.5.2", features = ["deadpool", "postgres"] }
diesel_migrations = "2.2.0"
env_logger = { version = "0.11.8", features = ["kv"] }
fastrace = "0.7"
float8 = "0.2.1"
gethostname = "1"
half = { version = "2.6.0", features = ["rand_distr", "num-traits"] }
http = "1.3.1"
# This ibverbs version support one-sided RDMA
ibverbs = { git = "https://github.com/jonhoo/rust-ibverbs", rev = "fa92aa3878151eb7ac44496fb36caa9d0197da6d", features = [
    "serde",
] }
indicatif = "0.17.11"
lazy_static = "1.5.0"
libc = "0.2.172"
log = { version = "0.4.26", features = ["kv"] }
memmap2 = "0.9.5"
memoffset = "0.9.1"
mime = "0.3.17"
moka = { version = "0.12.10", features = ["future"] }
ndarray = { version = "0.16.1", features = ["serde"] }
ndarray-rand = "0.15.0"
nix = { version = "0.30", features = ["fs", "mman"] }
num_cpus = "1.16.0"
object_store = "0.12.0"
object_store_opendal = "0.51.0"
opendal = { version = "0.52.0", features = ["services-s3", "services-fs"] }
opentelemetry = { version = "0.29.0", default-features = false, features = [
    "trace",
] }
opentelemetry_sdk = { version = "0.29.0", default-features = false, features = [
    "trace",
] }
opentelemetry-otlp = { version = "0.29.0", features = [
    "metrics",
    "grpc-tonic",
] }
opentelemetry-semantic-conventions = { version = "0.29.0", features = [
    "semconv_experimental",
] }
ort = { version = "=2.0.0-rc.9", features = [
    "ndarray",
    "load-dynamic",
    "copy-dylibs",
    "half",
] }
ort-sys = { version = "=2.0.0-rc.9" }
polars = { version = "0.46.0", features = [
    "sql",
    "ndarray",
    "lazy",
    "serde",
    "json",
    "parquet",
] }
polars-io = "0.46.0"
prometheus = "0.14.0"
prost = "0.13"
rand = "0.9.1"
rand_distr = "0.5.1"
reqwest = "0.12.15"
rmp-serde = "1.3.0"
safetensors = "0.5.3"
serde = { version = "1.0.219", features = ["derive", "serde_derive"] }
serde_derive = "1.0.219"
serde_json = "1.0.140"
serde_yaml = "0.9.34"
serde_arrays = "0.2.0"
sysinfo = "0.33.1"
tch = "0.20.0"
thiserror = "2"
tokio = { version = "1.0", features = ["macros", "rt-multi-thread"] }
tokio-stream = "0.1.17"
tokio-util = "0.7.15"
tonic = "0.13.1"
tonic-build = "0.13.1"
tower = "0.5.2"
tracing = { version = "0.1.41", default-features = false, features = [
    "std",
    "attributes",
] }
tracing-opentelemetry = "0.30.0"
tracing-subscriber = { version = "0.3.19", default-features = false, features = [
    "std",
    "registry",
    "local-time",
] }
url = "2.5.7"