backend.ai-kernel-binary 26.2.4__tar.gz → 26.3.0rc1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/PKG-INFO +2 -2
  2. backend_ai_kernel_binary-26.3.0rc1/ai/backend/runner/VERSION +1 -0
  3. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/all-smi.1 +67 -14
  4. backend_ai_kernel_binary-26.3.0rc1/ai/backend/runner/all-smi.aarch64.bin +0 -0
  5. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/bssh.1 +485 -7
  6. backend_ai_kernel_binary-26.2.4/ai/backend/runner/all-smi.aarch64.bin → backend_ai_kernel_binary-26.3.0rc1/ai/backend/runner/bssh.aarch64.bin +0 -0
  7. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/backend.ai_kernel_binary.egg-info/PKG-INFO +2 -2
  8. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/setup.py +2 -2
  9. backend_ai_kernel_binary-26.2.4/ai/backend/runner/VERSION +0 -1
  10. backend_ai_kernel_binary-26.2.4/ai/backend/runner/bssh.aarch64.bin +0 -0
  11. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/MANIFEST.in +0 -0
  12. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/.bash_profile +0 -0
  13. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/.bashrc +0 -0
  14. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/.tmux.conf +0 -0
  15. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/.vimrc +0 -0
  16. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/.zshrc +0 -0
  17. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/DO_NOT_STORE_PERSISTENT_FILES_HERE.md +0 -0
  18. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/README.md +0 -0
  19. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/__init__.py +0 -0
  20. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/default-seccomp.json +0 -0
  21. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/dropbearmulti.aarch64.bin +0 -0
  22. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/entrypoint.sh +0 -0
  23. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/extract_dotfiles.py +0 -0
  24. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/fantompass.py +0 -0
  25. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/hash_phrase.py +0 -0
  26. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/jupyter-custom.css +0 -0
  27. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/krunner-extractor.img.aarch64.tar.xz +0 -0
  28. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/krunner-extractor.sh +0 -0
  29. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/libbaihook.alpine3.8.aarch64.so +0 -0
  30. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/libbaihook.centos7.6.aarch64.so +0 -0
  31. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/libbaihook.centos7.9.aarch64.so +0 -0
  32. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/libbaihook.centos8.0.aarch64.so +0 -0
  33. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/libbaihook.ubuntu18.04.aarch64.so +0 -0
  34. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/libbaihook.ubuntu20.04.aarch64.so +0 -0
  35. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/libbaihook.ubuntu22.04.aarch64.so +0 -0
  36. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/logo.svg +0 -0
  37. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/roboto-italic.ttf +0 -0
  38. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/roboto.ttf +0 -0
  39. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/sftp-server.aarch64.bin +0 -0
  40. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/su-exec.aarch64.bin +0 -0
  41. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/terminfo.alpine3.8/s/screen +0 -0
  42. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/terminfo.alpine3.8/s/screen-256color +0 -0
  43. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/terminfo.alpine3.8/s/screen.xterm-256color +0 -0
  44. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/terminfo.alpine3.8/x/xterm +0 -0
  45. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/terminfo.alpine3.8/x/xterm+256color +0 -0
  46. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/terminfo.alpine3.8/x/xterm-256color +0 -0
  47. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/tmux.aarch64.bin +0 -0
  48. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/ttyd_linux.aarch64.bin +0 -0
  49. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/words.json +0 -0
  50. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/ai/backend/runner/yank.sh +0 -0
  51. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/backend.ai_kernel_binary.egg-info/SOURCES.txt +0 -0
  52. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/backend.ai_kernel_binary.egg-info/dependency_links.txt +0 -0
  53. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/backend.ai_kernel_binary.egg-info/namespace_packages.txt +0 -0
  54. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/backend.ai_kernel_binary.egg-info/not-zip-safe +0 -0
  55. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/backend.ai_kernel_binary.egg-info/top_level.txt +0 -0
  56. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/backend_shim.py +0 -0
  57. {backend_ai_kernel_binary-26.2.4 → backend_ai_kernel_binary-26.3.0rc1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: backend.ai-kernel-binary
3
- Version: 26.2.4
3
+ Version: 26.3.0rc1
4
4
  Summary: Backend.AI Kernel Runner Prebuilt Binaries Package
5
5
  Home-page: https://github.com/lablup/backend.ai
6
6
  Author: Lablup Inc. and contributors
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 3
15
15
  Classifier: Environment :: No Input/Output (Daemon)
16
16
  Classifier: Topic :: Scientific/Engineering
17
17
  Classifier: Topic :: Software Development
18
- Classifier: Development Status :: 5 - Production/Stable
18
+ Classifier: Development Status :: 4 - Beta
19
19
  Classifier: Programming Language :: Python :: 3.13
20
20
  Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
21
21
  Requires-Python: >=3.13,<3.14
@@ -1,4 +1,4 @@
1
- .TH ALL-SMI 1 "November 2025" "all-smi 0.11.0" "User Commands"
1
+ .TH ALL-SMI 1 "March 2026" "all-smi 0.17.3" "User Commands"
2
2
  .SH NAME
3
3
  all-smi \- Command-line utility for monitoring GPU hardware
4
4
  .SH SYNOPSIS
@@ -15,9 +15,11 @@ all-smi \- Command-line utility for monitoring GPU hardware
15
15
  \fBhelp\fR [\fICOMMAND\fR]
16
16
  .SH DESCRIPTION
17
17
  .B all-smi
18
- is a comprehensive hardware monitoring tool that provides real-time information about GPU/NPU utilization,
19
- memory usage, temperature, power consumption, and other metrics. It supports various hardware platforms
20
- including NVIDIA GPUs, Apple Silicon, NVIDIA Jetson, Tenstorrent NPUs, Rebellions NPUs, and Furiosa NPUs.
18
+ is a comprehensive hardware monitoring tool that provides real-time information about GPU/NPU utilization,
19
+ memory usage, temperature, power consumption, chassis-level metrics, and other system information. It supports various hardware platforms
20
+ including NVIDIA GPUs, AMD GPUs, Apple Silicon, NVIDIA Jetson, Google Cloud TPUs, Tenstorrent NPUs, Rebellions NPUs, and Furiosa NPUs.
21
+ Chassis monitoring provides node-level power consumption tracking (CPU+GPU+ANE), thermal pressure monitoring (Apple Silicon),
22
+ and BMC sensor integration for inlet/outlet temperatures and fan speeds on server systems.
21
23
 
22
24
  The tool can run in three primary modes:
23
25
  .TP
@@ -33,7 +35,7 @@ A Prometheus-compatible metrics endpoint for integration with monitoring systems
33
35
  .TP
34
36
  .B local
35
37
  Run in local mode, monitoring local GPUs/NPUs with an interactive TUI. This is the default mode if no command is specified.
36
- Requires sudo permissions on macOS for Apple Silicon metrics.
38
+ No sudo required on macOS (uses native APIs).
37
39
  .TP
38
40
  .B view
39
41
  Run in remote view mode, monitoring remote nodes via API endpoints. Requires either --hosts or --hostfile option.
@@ -41,7 +43,7 @@ Does not require sudo permissions.
41
43
  .TP
42
44
  .B api
43
45
  Run in API mode, exposing metrics in Prometheus format via HTTP endpoint.
44
- Requires sudo permissions on macOS for Apple Silicon metrics.
46
+ No sudo required on macOS (uses native APIs).
45
47
  .TP
46
48
  .B help
47
49
  Display help information about all-smi or a specific command.
@@ -84,17 +86,30 @@ If not specified, uses adaptive interval based on node count:
84
86
  .SS API Mode Options
85
87
  .TP
86
88
  .B \-p, \-\-port \fIPORT\fR
87
- The port to listen on for the API server (default: 9090)
89
+ The port to listen on for the API server (default: 9090). Use 0 to disable TCP listener when using Unix socket.
88
90
  .TP
89
91
  .B \-i, \-\-interval \fISECONDS\fR
90
92
  The interval in seconds at which to update the hardware information (default: 3)
91
93
  .TP
92
94
  .B \-\-processes
93
95
  Include the process list in the API output
96
+ .TP
97
+ .B \-s, \-\-socket \fR[\fIPATH\fR]
98
+ Unix domain socket path for local IPC (Unix only). When specified without a path, uses platform default:
99
+ .RS
100
+ .IP \(bu 3
101
+ Linux: /var/run/all-smi.sock (fallback to /tmp/all-smi.sock if no write permission)
102
+ .IP \(bu 3
103
+ macOS: /tmp/all-smi.sock
104
+ .RE
105
+ .RS
106
+ Socket permissions are set to 0600 (owner-only access) for security.
107
+ Can be used together with --port for simultaneous TCP and Unix socket listeners.
108
+ .RE
94
109
  .SH INTERACTIVE CONTROLS (LOCAL/VIEW MODE)
95
110
  .TP
96
111
  .B Tab / Shift+Tab
97
- Navigate between different tabs (GPU, CPU, Memory, Network, Disk)
112
+ Navigate between different tabs (GPU, CPU, Memory, Chassis, Network, Disk)
98
113
  .TP
99
114
  .B Up/Down Arrow Keys, j/k
100
115
  Navigate through items in the current tab
@@ -112,7 +127,28 @@ Jump to the first/last item
112
127
  Refresh the display immediately
113
128
  .TP
114
129
  .B d
115
- Toggle debug log visibility
130
+ Sort by default (hostname+index)
131
+ .TP
132
+ .B f
133
+ Toggle GPU process filter (show only processes with GPU memory usage)
134
+ .TP
135
+ .B g
136
+ Sort by GPU memory usage
137
+ .TP
138
+ .B m
139
+ Sort by memory percentage
140
+ .TP
141
+ .B p
142
+ Sort by PID
143
+ .TP
144
+ .B u
145
+ Sort by utilization
146
+ .TP
147
+ .B c
148
+ Toggle per-core CPU display
149
+ .TP
150
+ .B h / 1
151
+ Toggle help screen
116
152
  .TP
117
153
  .B q, Ctrl+C
118
154
  Quit the application
@@ -121,12 +157,18 @@ Quit the application
121
157
  .B NVIDIA GPUs
122
158
  Full support via nvidia-smi, including CUDA information, PCIe status, and performance states
123
159
  .TP
160
+ .B AMD GPUs
161
+ Support for Radeon and Instinct GPUs via ROCm/libamdgpu_top, including VRAM/GTT memory tracking and fdinfo-based process monitoring
162
+ .TP
124
163
  .B Apple Silicon
125
164
  Native support for M1/M2/M3/M4 series with Metal API integration, ANE power monitoring, and thermal pressure tracking
126
165
  .TP
127
166
  .B NVIDIA Jetson
128
167
  Tegra-specific metrics with DLA (Deep Learning Accelerator) support
129
168
  .TP
169
+ .B Google Cloud TPUs
170
+ Support for TPU v2-v7/Ironwood architectures, HBM memory tracking, and integration with libtpu/JAX workflows
171
+ .TP
130
172
  .B Tenstorrent NPUs
131
173
  Support for Grayskull and Wormhole architectures with multiple temperature sensors and clock domains
132
174
  .TP
@@ -160,6 +202,18 @@ Start API server on default port 9090:
160
202
  Start API server on custom port with 5-second interval:
161
203
  .B all-smi api --port 8080 --interval 5
162
204
  .TP
205
+ Start API server with Unix socket (default path):
206
+ .B all-smi api --socket
207
+ .TP
208
+ Start API server with TCP and Unix socket simultaneously:
209
+ .B all-smi api --port 9090 --socket /tmp/all-smi.sock
210
+ .TP
211
+ Start API server with Unix socket only (no TCP):
212
+ .B all-smi api --port 0 --socket
213
+ .TP
214
+ Access metrics via Unix socket:
215
+ .B curl --unix-socket /tmp/all-smi.sock http://localhost/metrics
216
+ .TP
163
217
  Monitor local hardware with custom interval:
164
218
  .B all-smi local --interval 5
165
219
  .TP
@@ -188,7 +242,7 @@ https://node003:9443
188
242
  Set logging level (e.g., debug, info, warn, error)
189
243
  .SH NOTES
190
244
  .IP \(bu 3
191
- On macOS, sudo permissions are required for accessing hardware metrics via the powermetrics command
245
+ On macOS, no sudo permissions are required (uses native APIs: IOReport, SMC, NSProcessInfo)
192
246
  .IP \(bu 3
193
247
  Remote monitoring requires the target hosts to be running all-smi in API mode
194
248
  .IP \(bu 3
@@ -209,7 +263,7 @@ Interrupted by Ctrl+C (SIGINT)
209
263
  .B 143
210
264
  Terminated by SIGTERM
211
265
  .SH BUGS
212
- Report bugs at: https://github.com/inureyes/all-smi/issues
266
+ Report bugs at: https://github.com/lablup/all-smi/issues
213
267
  .SH AUTHOR
214
268
  Written by Jeongkyu Shin <inureyes@gmail.com>
215
269
  .SH COPYRIGHT
@@ -220,7 +274,6 @@ License: MIT OR Apache-2.0
220
274
  This is free software: you are free to change and redistribute it.
221
275
  There is NO WARRANTY, to the extent permitted by law.
222
276
  .SH SEE ALSO
223
- .BR nvidia-smi (1),
224
- .BR powermetrics (1)
277
+ .BR nvidia-smi (1)
225
278
 
226
- Project homepage: https://github.com/inureyes/all-smi
279
+ Project homepage: https://github.com/lablup/all-smi
@@ -1,6 +1,6 @@
1
1
  .\" Manpage for bssh
2
2
  .\" Contact the maintainers to correct errors or typos.
3
- .TH BSSH 1 "October 2025" "v1.2.2" "bssh Manual"
3
+ .TH BSSH 1 "January 2026" "v1.7.0" "bssh Manual"
4
4
 
5
5
  .SH NAME
6
6
  bssh \- Broadcast SSH - SSH-compatible client with parallel execution capabilities
@@ -24,7 +24,10 @@ common SSH options and automatically starting an interactive shell when no comma
24
24
 
25
25
  .B Multi-Server Mode:
26
26
  When used with clusters (-C) or multiple hosts (-H), bssh executes commands across multiple nodes
27
- simultaneously with real-time output streaming.
27
+ simultaneously with real-time output monitoring. In interactive terminals, bssh automatically
28
+ launches a Terminal User Interface (TUI) with multiple view modes (Summary, Detail, Split, Diff)
29
+ for real-time monitoring. The TUI can be disabled with --stream (real-time text output) or
30
+ --output-dir (save to files).
28
31
 
29
32
  The tool provides secure file transfer capabilities using SFTP protocol, supports multiple authentication
30
33
  methods (SSH keys with passphrase support, SSH agent, password), and automatically detects Backend.AI
@@ -110,7 +113,29 @@ Example: -D 1080 (SOCKS5 proxy on localhost:1080), -D *:1080/4 (SOCKS4 on all in
110
113
  .TP
111
114
  .BR \-H ", " \-\-hosts " " \fIHOSTS\fR
112
115
  Comma-separated list of hosts in [user@]hostname[:port] format.
113
- Example: user1@host1:2222,user2@host2
116
+ Supports pdsh-style hostlist expressions for range expansion.
117
+ .RS
118
+ .PP
119
+ Simple host list:
120
+ .IP \[bu] 2
121
+ -H "user1@host1:2222,user2@host2"
122
+ .PP
123
+ Hostlist expressions (range expansion):
124
+ .IP \[bu] 2
125
+ -H "node[1-5]" \[->] node1, node2, node3, node4, node5
126
+ .IP \[bu] 2
127
+ -H "node[01-05]" \[->] node01, node02, ... (zero-padded)
128
+ .IP \[bu] 2
129
+ -H "node[1,3,5]" \[->] node1, node3, node5 (specific values)
130
+ .IP \[bu] 2
131
+ -H "rack[1-2]-node[1-3]" \[->] 6 hosts (cartesian product)
132
+ .IP \[bu] 2
133
+ -H "web[1-3].example.com" \[->] web1.example.com, web2.example.com, ...
134
+ .IP \[bu] 2
135
+ -H "admin@web[1-3]:22" \[->] expands with user and port preserved
136
+ .IP \[bu] 2
137
+ -H "^/path/to/hostfile" \[->] read hosts from file
138
+ .RE
114
139
 
115
140
  .TP
116
141
  .BR \-C ", " \-\-cluster " " \fICLUSTER\fR
@@ -134,21 +159,152 @@ Use password authentication. When this option is specified, bssh will
134
159
  prompt for the password securely without echoing it to the terminal.
135
160
  This is useful for systems that don't have SSH keys configured.
136
161
 
162
+ .TP
163
+ .BR \-S ", " \-\-sudo\-password
164
+ Prompt for sudo password to automatically respond to sudo prompts.
165
+ When this option is specified, bssh will:
166
+ .RS
167
+ .IP \[bu] 2
168
+ Securely prompt for sudo password before execution (no terminal echo)
169
+ .IP \[bu] 2
170
+ Detect sudo password prompts in command output
171
+ .IP \[bu] 2
172
+ Automatically inject the password when prompted
173
+ .RE
174
+ .IP
175
+ Alternatively, set the
176
+ .B BSSH_SUDO_PASSWORD
177
+ environment variable (not recommended for security reasons).
178
+ .IP
179
+ Security notes:
180
+ .RS
181
+ .IP \[bu] 2
182
+ Password is stored using secure memory handling (secrecy crate)
183
+ .IP \[bu] 2
184
+ Password is cleared from memory immediately after use
185
+ .IP \[bu] 2
186
+ Password is never logged or printed in any output
187
+ .RE
188
+
137
189
  .TP
138
190
  .BR \-f ", " \-\-filter " " \fIPATTERN\fR
139
- Filter hosts by pattern (supports wildcards like 'web*').
191
+ Filter hosts by pattern. Supports both wildcards and hostlist expressions.
140
192
  Use with -H or -C to execute on a subset of hosts.
141
- Example: -f "web*" matches web01, web02, etc.
193
+ .RS
194
+ .PP
195
+ Examples:
196
+ .IP \[bu] 2
197
+ -f "web*" \[->] matches web01, web02, etc. (glob pattern)
198
+ .IP \[bu] 2
199
+ -f "node[1-5]" \[->] matches node1 through node5 (hostlist expression)
200
+ .IP \[bu] 2
201
+ -f "node[1,3,5]" \[->] matches node1, node3, node5 (specific values)
202
+ .RE
203
+
204
+ .TP
205
+ .BR \-\-exclude " " \fIHOSTS\fR
206
+ Exclude hosts from target list (comma-separated).
207
+ Supports wildcards, glob patterns, and hostlist expressions.
208
+ Applied after --filter option.
209
+ .RS
210
+ .PP
211
+ Glob patterns:
212
+ .IP \[bu] 2
213
+ --exclude "db*" \[->] exclude hosts starting with 'db'
214
+ .IP \[bu] 2
215
+ --exclude "*-backup" \[->] exclude backup nodes
216
+ .IP \[bu] 2
217
+ --exclude "web[12]" \[->] exclude web1 and web2 (glob character class)
218
+ .PP
219
+ Hostlist expressions:
220
+ .IP \[bu] 2
221
+ --exclude "node[3-5]" \[->] exclude node3, node4, node5 (range)
222
+ .IP \[bu] 2
223
+ --exclude "node[1,3,5]" \[->] exclude node1, node3, node5 (specific values)
224
+ .IP \[bu] 2
225
+ --exclude "rack[1-2]-node[1-3]" \[->] exclude 6 hosts (cartesian product)
226
+ .PP
227
+ Simple patterns:
228
+ .IP \[bu] 2
229
+ --exclude "node2" \[->] exclude single host
230
+ .IP \[bu] 2
231
+ --exclude "web1,web2" \[->] exclude multiple hosts
232
+ .RE
142
233
 
143
234
  .TP
144
235
  .BR \-\-parallel " " \fIPARALLEL\fR
145
236
  Maximum parallel connections for multi-server mode (default: 10)
146
237
  Note: -p is now used for port (SSH compatibility)
147
238
 
239
+ .TP
240
+ .BR \-\-timeout " " \fISECONDS\fR
241
+ Command execution timeout in seconds. Set to 0 for unlimited execution time.
242
+ Default is 300 seconds (5 minutes).
243
+ .br
244
+ Example: --timeout 60 (1 minute timeout)
245
+
246
+ .TP
247
+ .BR \-\-connect\-timeout " " \fISECONDS\fR
248
+ SSH connection timeout in seconds. This is the time to wait for the initial
249
+ SSH connection to be established, separate from the command execution timeout.
250
+ Minimum value is 1 second. Default is 30 seconds.
251
+ .br
252
+ This option is useful for:
253
+ .RS
254
+ .IP \[bu] 2
255
+ Fast failure detection on unreachable hosts
256
+ .IP \[bu] 2
257
+ Adjusting timeout for high-latency networks
258
+ .IP \[bu] 2
259
+ Setting different timeouts for connection vs command execution
260
+ .RE
261
+ .IP
262
+ Example: --connect-timeout 10 (10 second connection timeout)
263
+
148
264
  .TP
149
265
  .BR \-\-output\-dir " " \fIOUTPUT_DIR\fR
150
266
  Output directory for command results. When specified, saves command outputs
151
- to separate files for each node with stdout, stderr, and execution summary
267
+ to separate files for each node with stdout, stderr, and execution summary.
268
+ Creates timestamped files:
269
+ .I hostname_TIMESTAMP.stdout
270
+ (command output),
271
+ .I hostname_TIMESTAMP.stderr
272
+ (error output)
273
+
274
+ .TP
275
+ .BR \-\-stream
276
+ Stream output in real-time with [node] prefixes. Each line of output is
277
+ prefixed with the node hostname and displayed as it arrives. Useful for
278
+ monitoring long-running commands across multiple nodes. Automatically
279
+ disabled when output is piped or in CI environments. This disables the
280
+ interactive TUI mode.
281
+
282
+ .TP
283
+ .BR \-N ", " \-\-no\-prefix
284
+ Disable hostname prefix in output lines (pdsh -N compatibility). When
285
+ specified, output lines are displayed without the [hostname] prefix,
286
+ which is useful for programmatic parsing or cleaner display. Works
287
+ with both stream mode (--stream) and file mode (--output-dir).
288
+ Example: bssh -H host1,host2 --stream -N "uname -a"
289
+
290
+ .TP
291
+ .BR \-k ", " \-\-fail\-fast
292
+ Stop execution immediately on first failure (pdsh -k compatible).
293
+ When enabled, bssh cancels pending commands when any node fails due to
294
+ connection error or non-zero exit code. This is useful for:
295
+ .RS
296
+ .IP \[bu] 2
297
+ Critical operations where partial execution is unacceptable
298
+ .IP \[bu] 2
299
+ Deployment scripts where all nodes must succeed
300
+ .IP \[bu] 2
301
+ Validation checks across clusters
302
+ .RE
303
+ .IP
304
+ Running tasks are terminated gracefully, and the error message clearly
305
+ indicates which node caused the failure. Can be combined with
306
+ .B --require-all-success
307
+ for strict error handling.
152
308
 
153
309
  .TP
154
310
  .BR \-v ", " \-\-verbose
@@ -269,6 +425,7 @@ defaults:
269
425
  port: 22
270
426
  ssh_key: ~/.ssh/id_rsa
271
427
  parallel: 10
428
+ jump_host: bastion.example.com # Global default jump host
272
429
 
273
430
  # Global interactive mode settings (optional)
274
431
  interactive:
@@ -287,6 +444,7 @@ clusters:
287
444
  - web2.example.com
288
445
  - user@web3.example.com:2222
289
446
  ssh_key: ~/.ssh/prod_key
447
+ jump_host: prod-bastion.example.com # Cluster-level jump host
290
448
  # Cluster-specific interactive settings (overrides global)
291
449
  interactive:
292
450
  default_mode: single_node
@@ -298,8 +456,52 @@ clusters:
298
456
  - host: staging1.example.com
299
457
  port: 2200
300
458
  user: deploy
459
+ jump_host: staging-bastion.example.com # Node-level jump host
301
460
  - staging2.example.com
302
461
  user: staging_user
462
+ jump_host: "" # Empty string disables jump host for this cluster
463
+ .fi
464
+
465
+ .SS Jump Host Configuration in YAML
466
+ Jump hosts can be configured at three levels with the following priority:
467
+
468
+ .IP 1. 4
469
+ \fBNode-level\fR (highest priority) - applies to specific node only
470
+ .IP 2. 4
471
+ \fBCluster-level\fR - applies to all nodes in the cluster
472
+ .IP 3. 4
473
+ \fBGlobal defaults\fR - applies to all clusters without explicit jump_host
474
+
475
+ .PP
476
+ The CLI \fB-J\fR option always takes precedence over configuration file settings.
477
+
478
+ .PP
479
+ Special values:
480
+ .IP \[bu] 2
481
+ Empty string (\fB""\fR) - explicitly disables jump host inheritance
482
+ .IP \[bu] 2
483
+ Environment variables supported: \fB${VAR}\fR or \fB$VAR\fR syntax
484
+
485
+ .PP
486
+ Example with all levels:
487
+ .nf
488
+ defaults:
489
+ jump_host: global-bastion.example.com
490
+
491
+ clusters:
492
+ production:
493
+ nodes:
494
+ - host: web1.internal
495
+ jump_host: special-bastion.example.com # Uses special-bastion
496
+ - host: web2.internal # Uses prod-bastion
497
+ - host: direct.example.com
498
+ jump_host: "" # Direct connection (no jump)
499
+ jump_host: prod-bastion.example.com
500
+
501
+ direct_cluster:
502
+ nodes:
503
+ - host: external.example.com
504
+ jump_host: "" # Cluster disables inherited global jump_host
303
505
  .fi
304
506
 
305
507
  .SH SSH CONFIGURATION OPTIONS
@@ -884,6 +1086,82 @@ Host legacy.example.com
884
1086
  RequiredRSASize 1024
885
1087
  .fi
886
1088
 
1089
+ .SH PDSH COMPATIBILITY MODE
1090
+ .B bssh
1091
+ supports pdsh compatibility mode, enabling it to act as a drop-in replacement for pdsh.
1092
+ This allows seamless migration from pdsh without modifying existing scripts.
1093
+
1094
+ .SS Activation Methods
1095
+
1096
+ .TP
1097
+ .B Binary symlink (recommended)
1098
+ Create a symlink to use bssh as pdsh:
1099
+ .nf
1100
+ sudo ln -s /usr/bin/bssh /usr/local/bin/pdsh
1101
+ pdsh -w host1,host2 "uptime"
1102
+ .fi
1103
+
1104
+ .TP
1105
+ .B Environment variable
1106
+ Set BSSH_PDSH_COMPAT to enable pdsh mode:
1107
+ .nf
1108
+ BSSH_PDSH_COMPAT=1 bssh -w host1,host2 "uptime"
1109
+ .fi
1110
+
1111
+ .TP
1112
+ .B CLI flag
1113
+ Use --pdsh-compat flag:
1114
+ .nf
1115
+ bssh --pdsh-compat -w host1,host2 "uptime"
1116
+ .fi
1117
+
1118
+ .SS pdsh Option Mapping
1119
+
1120
+ .TS
1121
+ l l l.
1122
+ pdsh option bssh equivalent Description
1123
+ _
1124
+ -w hosts -H hosts Target hosts
1125
+ -x hosts --exclude hosts Exclude hosts
1126
+ -f N --parallel N Fanout (default: 32)
1127
+ -l user -l user Remote username
1128
+ -t N --connect-timeout N Connection timeout
1129
+ -u N --timeout N Command timeout
1130
+ -N --no-prefix No hostname prefix
1131
+ -b --batch Batch mode
1132
+ -k --fail-fast Stop on first failure
1133
+ -q (query mode) Show hosts and exit
1134
+ -S --any-failure Return largest exit code
1135
+ .TE
1136
+
1137
+ .SS pdsh Mode Examples
1138
+
1139
+ .TP
1140
+ Basic command execution:
1141
+ .B pdsh -w node1,node2,node3 "uptime"
1142
+
1143
+ .TP
1144
+ With fanout limit:
1145
+ .B pdsh -w nodes -f 10 "df -h"
1146
+
1147
+ .TP
1148
+ Exclude specific hosts:
1149
+ .B pdsh -w node1,node2,node3 -x node2 "hostname"
1150
+
1151
+ .TP
1152
+ Query mode (show hosts without executing):
1153
+ .B pdsh -w host1,host2,host3 -x host2 -q
1154
+ .RS
1155
+ Shows only host1 and host3
1156
+ .RE
1157
+
1158
+ .TP
1159
+ Query mode with glob patterns:
1160
+ .B pdsh -w web1,web2,db1,db2 -x "db*" -q
1161
+ .RS
1162
+ Shows web1 and web2 (db* pattern excludes db1 and db2)
1163
+ .RE
1164
+
887
1165
  .SH BACKEND.AI INTEGRATION
888
1166
  When running inside a Backend.AI multi-node session, bssh automatically detects cluster configuration
889
1167
  from environment variables:
@@ -902,6 +1180,79 @@ Current node's role (main or sub)
902
1180
 
903
1181
  Note: Backend.AI multi-node clusters use SSH port 2200 by default, which is automatically configured.
904
1182
 
1183
+ .SH HOSTLIST EXPRESSIONS
1184
+ Hostlist expressions provide a compact way to specify multiple hosts using range notation,
1185
+ compatible with pdsh syntax. This allows efficient targeting of large numbers of hosts
1186
+ without listing each one individually.
1187
+
1188
+ .SS Basic Syntax
1189
+ .TP
1190
+ .B Simple range
1191
+ .B node[1-5]
1192
+ expands to node1, node2, node3, node4, node5
1193
+ .TP
1194
+ .B Zero-padded range
1195
+ .B node[01-05]
1196
+ expands to node01, node02, node03, node04, node05
1197
+ .TP
1198
+ .B Comma-separated values
1199
+ .B node[1,3,5]
1200
+ expands to node1, node3, node5
1201
+ .TP
1202
+ .B Mixed ranges and values
1203
+ .B node[1-3,7,9-10]
1204
+ expands to node1, node2, node3, node7, node9, node10
1205
+
1206
+ .SS Advanced Patterns
1207
+ .TP
1208
+ .B Multiple ranges (cartesian product)
1209
+ .B rack[1-2]-node[1-3]
1210
+ expands to rack1-node1, rack1-node2, rack1-node3, rack2-node1, rack2-node2, rack2-node3
1211
+ .TP
1212
+ .B Domain suffix
1213
+ .B web[1-3].example.com
1214
+ expands to web1.example.com, web2.example.com, web3.example.com
1215
+ .TP
1216
+ .B With user and port
1217
+ .B admin@server[1-3]:2222
1218
+ expands to admin@server1:2222, admin@server2:2222, admin@server3:2222
1219
+
1220
+ .SS File Input
1221
+ .TP
1222
+ .B ^/path/to/hostfile
1223
+ Reads hosts from file, one per line. Lines starting with # are comments.
1224
+ Maximum file size: 1MB, maximum lines: 100,000.
1225
+
1226
+ .SS Using with Options
1227
+ Hostlist expressions can be used with:
1228
+ .TP
1229
+ .B -H, --hosts
1230
+ Specify target hosts:
1231
+ .B bssh -H "node[1-10]" "uptime"
1232
+ .TP
1233
+ .B --filter
1234
+ Include only matching hosts:
1235
+ .B bssh -c cluster --filter "web[1-5]" "systemctl status nginx"
1236
+ .TP
1237
+ .B --exclude
1238
+ Exclude matching hosts:
1239
+ .B bssh -c cluster --exclude "node[1,3,5]" "df -h"
1240
+
1241
+ .SS Examples
1242
+ .nf
1243
+ # Execute on 100 nodes
1244
+ bssh -H "compute[001-100]" "hostname"
1245
+
1246
+ # Target specific racks
1247
+ bssh -H "rack[A-C]-node[1-8]" "uptime"
1248
+
1249
+ # Use hosts from file
1250
+ bssh -H "^/etc/cluster/hosts" "date"
1251
+
1252
+ # Combine with exclusions
1253
+ bssh -H "node[1-20]" --exclude "node[5,10,15]" "ps aux"
1254
+ .fi
1255
+
905
1256
  .SH EXAMPLES
906
1257
 
907
1258
  .SS SSH Compatibility Mode (Single Host)
@@ -1008,6 +1359,25 @@ Executes command only on hosts matching the pattern 'web*'
1008
1359
  Executes command only on database nodes in the production cluster
1009
1360
  .RE
1010
1361
 
1362
+ .TP
1363
+ Exclude specific hosts from execution:
1364
+ .B bssh -H "node1,node2,node3" --exclude "node2" "uptime"
1365
+ .RS
1366
+ Executes command on node1 and node3, excluding node2
1367
+ .RE
1368
+
1369
+ .TP
1370
+ .B bssh -C production --exclude "db*" "systemctl restart nginx"
1371
+ .RS
1372
+ Executes command on all production hosts except database servers
1373
+ .RE
1374
+
1375
+ .TP
1376
+ .B bssh -C production --exclude "web1,web2" "apt update"
1377
+ .RS
1378
+ Excludes specific hosts web1 and web2 from the cluster operation
1379
+ .RE
1380
+
1011
1381
  .TP
1012
1382
  Test connectivity:
1013
1383
  .B bssh -C production ping
@@ -1050,6 +1420,20 @@ Use password authentication:
1050
1420
  Prompts for password interactively
1051
1421
  .RE
1052
1422
 
1423
+ .TP
1424
+ Execute sudo commands with automatic password injection:
1425
+ .B bssh -S -C production "sudo apt update && sudo apt upgrade -y"
1426
+ .RS
1427
+ Prompts for sudo password once, then automatically responds to sudo prompts on all nodes
1428
+ .RE
1429
+
1430
+ .TP
1431
+ Combine sudo with SSH agent authentication:
1432
+ .B bssh -A -S -C production "sudo systemctl restart nginx"
1433
+ .RS
1434
+ Uses SSH agent for connection and sudo password for privilege escalation
1435
+ .RE
1436
+
1053
1437
  .TP
1054
1438
  Use encrypted SSH key:
1055
1439
  .B bssh -i ~/.ssh/encrypted_key -C production "df -h"
@@ -1066,12 +1450,83 @@ Creates timestamped files per node:
1066
1450
  - hostname_TIMESTAMP.stdout (standard output)
1067
1451
  .br
1068
1452
  - hostname_TIMESTAMP.stderr (error output)
1069
- .br
1453
+ .br
1070
1454
  - hostname_TIMESTAMP.error (connection errors)
1071
1455
  .br
1072
1456
  - summary_TIMESTAMP.txt (execution summary)
1073
1457
  .RE
1074
1458
 
1459
+ .TP
1460
+ Interactive TUI mode (default in terminals):
1461
+ .B bssh -C production "apt-get update"
1462
+ .RS
1463
+ Automatically launches Terminal UI with real-time monitoring.
1464
+ .br
1465
+ TUI features:
1466
+ .br
1467
+ - Summary view: All nodes with progress bars
1468
+ .br
1469
+ - Detail view (press 1-9): Full output from specific node
1470
+ .br
1471
+ - Split view (press s): Monitor 2-4 nodes simultaneously
1472
+ .br
1473
+ - Diff view (press d): Compare outputs side-by-side
1474
+ .br
1475
+ - Log panel (press l): Toggle in-TUI log display
1476
+ .br
1477
+ - Keyboard navigation: arrows, PgUp/PgDn, Home/End
1478
+ .br
1479
+ - Auto-scroll (press f): Toggle automatic scrolling
1480
+ .br
1481
+ - Help (press ?): Show all keyboard shortcuts
1482
+ .br
1483
+ Log panel keys (when visible):
1484
+ .br
1485
+ - j/k: Scroll log entries up/down
1486
+ .br
1487
+ - +/-: Adjust panel height (3-10 lines)
1488
+ .br
1489
+ - t: Toggle timestamps
1490
+ .RE
1491
+
1492
+ .TP
1493
+ Stream mode with real-time prefixes:
1494
+ .B bssh -C production --stream "tail -f /var/log/syslog"
1495
+ .RS
1496
+ Disables TUI and streams output with [node] prefixes in real-time.
1497
+ .br
1498
+ Example output:
1499
+ .br
1500
+ [host1] Oct 30 10:15:23 systemd[1]: Started nginx
1501
+ .br
1502
+ [host2] Oct 30 10:15:24 kernel: [UFW BLOCK] IN=eth0
1503
+ .br
1504
+ Useful for monitoring long-running commands or when piping output.
1505
+ .RE
1506
+
1507
+ .SS Fail-Fast Mode Examples
1508
+ .TP
1509
+ Stop on first failure during critical deployment:
1510
+ .B bssh -k -C production "deploy.sh"
1511
+ .RS
1512
+ Execution stops immediately if any node fails the deployment script
1513
+ .RE
1514
+
1515
+ .TP
1516
+ Combine fail-fast with require-all-success:
1517
+ .B bssh --fail-fast --require-all-success -C production "service-restart.sh"
1518
+ .RS
1519
+ Stops early on failure AND ensures final exit code reflects any failures
1520
+ .RE
1521
+
1522
+ .TP
1523
+ Sequential fail-fast with limited parallelism:
1524
+ .B bssh -k --parallel 1 -H "node1,node2,node3" "critical-operation"
1525
+ .RS
1526
+ Runs commands one at a time, stopping on first failure
1527
+ .RE
1528
+
1529
+ .SS File Transfer Examples
1075
1530
  .TP
1076
1531
  Upload configuration file to all nodes:
1077
1532
  .B bssh -H "node1,node2,node3" upload /etc/myapp.conf /etc/myapp.conf
@@ -1333,6 +1788,29 @@ attacks while allowing flexible jump host configurations.
1333
1788
  .br
1334
1789
  Example: BSSH_MAX_JUMP_HOSTS=20 bssh -J host1,host2,...,host20 target
1335
1790
 
1791
+ .TP
1792
+ .B BSSH_SUDO_PASSWORD
1793
+ Sudo password for automated sudo authentication. When set along with the
1794
+ .B -S
1795
+ flag, bssh will use this password instead of prompting interactively.
1796
+ .br
1797
+ .B WARNING:
1798
+ Using environment variables for passwords is not recommended for production
1799
+ use as they may be visible in process listings, shell history, or logs.
1800
+ Prefer the interactive prompt for security-sensitive operations.
1801
+ .br
1802
+ Example: BSSH_SUDO_PASSWORD=mypassword bssh -S -C cluster "sudo apt update"
1803
+
1804
+ .TP
1805
+ .B BSSH_TUI_LOG_MAX_ENTRIES
1806
+ Maximum number of log entries to keep in the TUI log panel buffer.
1807
+ .br
1808
+ Default: 1000
1809
+ .br
1810
+ Maximum: 10000 (prevents memory exhaustion)
1811
+ .br
1812
+ Example: BSSH_TUI_LOG_MAX_ENTRIES=5000 bssh -C cluster "command"
1813
+
1336
1814
  .TP
1337
1815
  .B USER
1338
1816
  Used as default username when not specified
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: backend.ai-kernel-binary
3
- Version: 26.2.4
3
+ Version: 26.3.0rc1
4
4
  Summary: Backend.AI Kernel Runner Prebuilt Binaries Package
5
5
  Home-page: https://github.com/lablup/backend.ai
6
6
  Author: Lablup Inc. and contributors
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 3
15
15
  Classifier: Environment :: No Input/Output (Daemon)
16
16
  Classifier: Topic :: Scientific/Engineering
17
17
  Classifier: Topic :: Software Development
18
- Classifier: Development Status :: 5 - Production/Stable
18
+ Classifier: Development Status :: 4 - Beta
19
19
  Classifier: Programming Language :: Python :: 3.13
20
20
  Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
21
21
  Requires-Python: >=3.13,<3.14
@@ -15,7 +15,7 @@ setup(**{
15
15
  'Environment :: No Input/Output (Daemon)',
16
16
  'Topic :: Scientific/Engineering',
17
17
  'Topic :: Software Development',
18
- 'Development Status :: 5 - Production/Stable',
18
+ 'Development Status :: 4 - Beta',
19
19
  'Programming Language :: Python :: 3.13',
20
20
  'License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)',
21
21
  ],
@@ -83,7 +83,7 @@ setup(**{
83
83
  },
84
84
  'python_requires': '>=3.13,<3.14',
85
85
  'url': 'https://github.com/lablup/backend.ai',
86
- 'version': """26.2.4
86
+ 'version': """26.3.0rc1
87
87
  """,
88
88
  'zip_safe': False,
89
89
  })