id = "csshx"
name = "csshX"
homepage = "https://github.com/brockgr/csshx"
description = "Cluster SSH tool for Terminal.app."
executables = ["csshX"]
[dotfiles]
paths = ["~/.csshrc"]
exclude = []
secret = []
[commands]
format = 1
label = "Open cluster SSH windows"
description = "Open one Terminal window per host and a master window that types into all of them. Cluster definitions, settings sets and debug options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false }
[[commands.source]]
id = "man"
kind = "manual"
url = "https://github.com/brockgr/csshx/blob/master/csshX"
revision = "2026-10-27"
evidence = """
csshX [--login username] [--config filename]
[ [user@]host1[:port] [[user@]host2[:port]] .. ]
=item -l username, --login username
=item -x, --tile_x number
=item -y, --tile_y number
=item --ssh ssh command
=item --ssh_args ssh arguments
=item --remote_command command to run
=item --hosts hosts_file
=item --ping_test, --ping number
=item --sorthosts
=item --screen number or range
"""
[[commands.field]]
id = "hosts"
label = "Hosts"
description = "Hostnames as [user@]host[:port]."
type = "string"
position = 0
multiple = true
sources = ["man"]
[[commands.field]]
id = "login"
label = "Login user"
type = "string"
option = ["--login", "-l"]
sources = ["man"]
[[commands.field]]
id = "hosts_file"
label = "Hosts file"
type = "path"
option = ["--hosts"]
path = { kind = "file", role = "input" }
sources = ["man"]
[[commands.field]]
id = "tile_x"
label = "Columns"
type = "integer"
option = ["--tile_x", "-x"]
sources = ["man"]
[[commands.field]]
id = "tile_y"
label = "Rows"
type = "integer"
option = ["--tile_y", "-y"]
sources = ["man"]
[[commands.field]]
id = "screen"
label = "Screen"
type = "string"
option = ["--screen"]
sources = ["man"]
[[commands.field]]
id = "ssh_args"
label = "Extra ssh arguments"
type = "string"
option = ["--ssh_args"]
sources = ["man"]
[[commands.field]]
id = "remote_command"
label = "Remote command"
type = "string"
option = ["--remote_command"]
sources = ["man"]
[[commands.field]]
id = "ping_test"
label = "Ping hosts first"
type = "boolean"
option = ["--ping_test"]
sources = ["man"]
[[commands.field]]
id = "sorthosts"
label = "Sort windows by hostname"
type = "boolean"
option = ["--sorthosts"]
sources = ["man"]
[[commands.task]]
id = "hosts"
label = "Connect to hosts"
fields = ["hosts", "login", "tile_x", "sorthosts"]
required = ["hosts"]
[[commands.task]]
id = "from-file"
label = "Connect to hosts from a file"
fields = ["hosts_file", "login", "ping_test"]
required = ["hosts_file"]
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["hosts", "login", "hosts_file", "tile_x", "tile_y"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["screen", "ssh_args", "remote_command", "ping_test", "sorthosts"]