[workspace]
members = [
".",
"crates/bssh-russh",
]
[package]
name = "bssh"
version = "2.1.2"
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"
[dependencies]
bytes = "1.11.1"
tokio = { version = "1.51.1", features = ["full"] }
russh = { package = "bssh-russh", version = "0.60.1", path = "crates/bssh-russh" }
russh-sftp = "2.1.1"
clap = { version = "4.6.0", features = ["derive", "env"] }
anyhow = "1.0.102"
thiserror = "2.0.18"
tracing = "0.1.43"
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"
directories = "6.0.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"
once_cell = "1.21.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"
lazy_static = "1.5"
ctrlc = "3.5.2"
signal-hook = "0.4.4"
nix = { version = "0.31", features = ["fs", "poll", "process", "signal", "term"] }
atty = "0.2.14"
arrayvec = "0.7.6"
smallvec = "1.15.1"
lru = "0.16.2"
uuid = { version = "1.23.0", features = ["v4"] }
fastrand = "2.4.1"
tokio-util = "0.7.17"
socket2 = "0.6"
shell-words = "1.1.1"
libc = "0.2"
ipnetwork = "0.21"
bcrypt = "0.19"
argon2 = "0.5"
rand = "0.10"
ssh-key = { version = "0.6", features = ["std"] }
async-compression = { version = "0.4", features = ["tokio", "gzip"] }
serde_json = "1.0"
opentelemetry = "0.31"
opentelemetry_sdk = { version = "0.31", features = ["rt-tokio", "logs"] }
opentelemetry-otlp = { version = "0.31", 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"
once_cell = "1.21.4"
tokio-test = "0.4"
serial_test = "3.4"
insta = "1.47"
criterion = { version = "0.8", features = ["html_reports"] }
mockall = "0.14"
[[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"