[package]
name = "openserve"
version = "2.0.2"
edition = "2021"
authors = ["Nik Jois <nikjois@llamasearch.ai>"]
description = "A modern, high-performance, AI-enhanced file server built in Rust"
documentation = "https://docs.rs/openserve"
homepage = "https://github.com/nikjois/openserve-rs"
repository = "https://github.com/nikjois/openserve-rs"
license = "MIT"
readme = "README.md"
keywords = ["file-server", "ai", "search", "web-server", "async"]
categories = ["web-programming::http-server", "filesystem", "text-processing", "command-line-utilities"]
exclude = [
"tests/*",
"benches/*",
"docker/*",
".github/*",
"*.log",
"target/*",
"files/*",
"data/*",
"index/*",
"logs/*"
]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[[bin]]
name = "openserve"
path = "src/main.rs"
[lib]
name = "openserve"
path = "src/lib.rs"
[dependencies]
tokio = { version = "1.0", features = ["full"] }
axum = { version = "0.7", features = ["macros", "multipart", "ws"] }
tower = { version = "0.4", features = ["full"] }
tower-http = { version = "0.5", features = ["full"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9"
config = "0.14"
anyhow = "1.0"
thiserror = "1.0"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["json", "env-filter"] }
tracing-appender = "0.2"
jsonwebtoken = "9.0"
bcrypt = "0.15"
argon2 = "0.5"
uuid = { version = "1.0", features = ["v4", "serde"] }
sqlx = { version = "0.7", features = ["runtime-tokio-rustls", "sqlite", "chrono", "uuid"] }
redis = { version = "0.24", features = ["tokio-comp"] }
tantivy = "0.22"
reqwest = { version = "0.11", features = ["json", "rustls-tls"] }
async-openai = { version = "0.25", optional = true }
moka = { version = "0.12.7", features = ["future"], optional = true }
mime_guess = "2.0"
walkdir = "2.0"
tempfile = "3.0"
futures = "0.3"
regex = "1.0"
flate2 = "1.0"
chrono = { version = "0.4", features = ["serde"] }
sha2 = "0.10"
rand = "0.8"
hex = "0.4"
clap = { version = "4.5.4", features = ["derive", "env"], optional = true }
prometheus = { version = "0.13", features = ["process"], optional = true }
once_cell = "1.0"
[dev-dependencies]
tokio-test = "0.4"
assert_matches = "1.5"
criterion = { version = "0.5", features = ["html_reports"] }
[features]
default = ["cli", "all-services"]
cli = ["dep:clap"]
all-services = ["ai", "auth-service", "search-service", "file-service", "http-server"]
ai = ["dep:async-openai", "dep:moka"]
auth-service = []
search-service = []
file-service = []
http-server = []
metrics = ["dep:prometheus"]
full = ["all-services", "metrics"]
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
panic = "abort"
[profile.dev]
opt-level = 0
debug = true
[profile.test]
opt-level = 1
debug = true