[workspace]
members = [
".",
"crates/bssh-russh-sftp",
]
[package]
name = "bssh"
version = "2.4.3"
authors = ["Jeongkyu Shin <inureyes@gmail.com>"]
description = "Parallel SSH command execution tool for cluster management"
license = "Apache-2.0"
repository = "https://github.com/lablup/bssh"
readme = "README.md"
keywords = ["cli", "rust"]
categories = ["command-line-utilities"]
edition = "2024"
rust-version = "1.96"
[dependencies]
bytes = "1.11.1"
tokio = { version = "1.52.3", features = ["full"] }
russh = "0.63.1"
russh-sftp = { package = "bssh-russh-sftp", version = "2.4.0", path = "crates/bssh-russh-sftp" }
clap = { version = "4.6.1", features = ["derive", "env"] }
anyhow = "1.0.102"
thiserror = "2.0.18"
tracing = "0.1.44"
tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_yaml = "0.9"
futures = "0.3.32"
async-trait = "0.1.89"
indicatif = "0.18.4"
rpassword = "7.4.0"
dirs = "6.0"
chrono = { version = "0.4.44", features = ["serde"] }
glob = "0.3.3"
whoami = "2.1.1"
owo-colors = "4.3.0"
unicode-width = "0.2.2"
terminal_size = "0.4.4"
zeroize = { version = "1.8.2", features = ["derive"] }
secrecy = { version = "0.10.3", features = ["serde"] }
rustyline = "18.0.0"
crossterm = "0.29"
ratatui = "0.30"
regex = "1.12.3"
signal-hook = "0.4"
nix = { version = "0.31", features = ["fs", "poll", "process", "signal", "term"] }
smallvec = "1.15.1"
lru = "0.18.0"
uuid = { version = "1.23.1", features = ["v4"] }
tokio-util = "0.7.18"
socket2 = "0.6"
shell-words = "1.1.1"
libc = "0.2"
ipnetwork = "0.21"
bcrypt = "0.19"
argon2 = { version = "0.5", features = ["std"] }
rand = "0.10"
ssh-key = { version = "=0.7.0-rc.11", features = ["std"] }
async-compression = { version = "0.4", features = ["tokio", "gzip"] }
serde_json = "1.0"
opentelemetry = "0.32"
opentelemetry_sdk = { version = "0.32", features = ["rt-tokio", "logs"] }
opentelemetry-otlp = { version = "0.32", features = ["grpc-tonic", "logs"] }
url = "2.5"
tokio-rustls = "0.26"
rustls-native-certs = "0.8"
[target.'cfg(target_os = "macos")'.dependencies]
security-framework = "3.7.0"
[dev-dependencies]
tempfile = "3.27.0"
mockito = "1.7.2"
tokio-test = "0.4"
serial_test = "4.0.1"
insta = "1.47"
criterion = { version = "0.8", features = ["html_reports"] }
mockall = "0.15.0"
[[bench]]
name = "large_output_benchmark"
harness = false
[[bin]]
name = "bssh-server"
path = "src/bin/bssh_server.rs"
[[bin]]
name = "bssh-keygen"
path = "src/bin/bssh_keygen.rs"
[profile.release]
lto = "fat"
codegen-units = 1