id = "i2cssh" name = "i2cssh" homepage = "https://github.com/wouterdebie/i2cssh" description = "csshX like ssh tool for iTerm2." executables = ["i2cssh"] platforms = ["macos"] [dotfiles] # README, "Configuration": "i2cssh can be configured using ~/.i2csshrc", a YAML # file whose top level is `version: 2`, a set of optional parameters and a # `clusters:` map of named host lists. The same section documents the parameters # it accepts globally or per cluster — broadcast, login, profile, rank, columns, # rows, sleep, direction, shell, environment, extra and include_from — and the # precedence order global < cluster < command line. It drives iTerm2, so the # entry is macOS-only. paths = ["~/.i2csshrc"] exclude = [] # Nothing in the file is a credential: i2cssh shells out to ssh, so the keys and # known_hosts are OpenSSH's and belong to the ssh entry. secret = [] # No machine_lines: the cluster definitions, the login name and the iTerm2 # profile to open are the whole content and all of it should follow the user. # `extra` can carry ssh flags that name a local identity file, but a rule on it # would drop the whole line rather than the path, so none is written. side_effect = false [commands] format = 1 label = "Open SSH sessions in iTerm2" description = "Open split panes or tabs for hosts or clusters. Layout, SSH and iTerm2 options are included; gateway, custom command and environment 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 = "readme" kind = "help" url = "https://github.com/wouterdebie/i2cssh/blob/master/README.md" revision = "master 2026-10" evidence = """ Usage: i2cssh [OPTIONS] [HOSTS_OR_CLUSTER]... HOSTS: [(login@host [login@host] | login@cluster)] -c, --clusters TEXT Comma-separated list of clusters specified -m, --machines TEXT Comma-separated list of hosts -t, --tab-split Split servers/clusters into tabs and put all -A, --forward-agent Enable SSH agent forwarding -l, --login TEXT SSH user name -F, --fullscreen Make the window fullscreen -b, --broadcast Start with broadcast input (DANGEROUS!) -p, --profile TEXT iTerm2 profile name (default: Default) -s, --sleep INTEGER Number of seconds to sleep between creating -d, --direction [column|row] Direction that new sessions are created -C, --columns INTEGER Number of columns (rows will be calculated) -R, --rows INTEGER Number of rows (columns will be calculated) `i2cssh` will assume you want to connect to a cluster when only one host is given. """ [[commands.field]] id = "hosts" label = "Hosts or cluster" description = "login@host entries, or one cluster name defined in ~/.i2csshrc." type = "string" position = 0 multiple = true sources = ["readme"] [[commands.field]] id = "clusters" label = "Clusters" description = "Comma-separated clusters from ~/.i2csshrc." type = "string" option = ["--clusters", "-c"] sources = ["readme"] [[commands.field]] id = "machines" label = "Machines" description = "Comma-separated list of hosts." type = "string" option = ["--machines", "-m"] sources = ["readme"] [[commands.field]] id = "login" label = "SSH user" type = "string" option = ["--login", "-l"] sources = ["readme"] [[commands.field]] id = "forward_agent" label = "Forward SSH agent" type = "boolean" option = ["--forward-agent", "-A"] sources = ["readme"] [[commands.field]] id = "tab_split" label = "Split into tabs" type = "boolean" option = ["--tab-split", "-t"] sources = ["readme"] [[commands.field]] id = "profile" label = "iTerm2 profile" type = "string" option = ["--profile", "-p"] sources = ["readme"] [[commands.field]] id = "direction" label = "Split direction" type = "enum" option = ["--direction", "-d"] choices = [{ value = "column", label = "Column" }, { value = "row", label = "Row" }] sources = ["readme"] [[commands.field]] id = "columns" label = "Columns" type = "integer" option = ["--columns", "-C"] sources = ["readme"] [[commands.field]] id = "rows" label = "Rows" type = "integer" option = ["--rows", "-R"] sources = ["readme"] [[commands.field]] id = "sleep" label = "Seconds between sessions" type = "integer" option = ["--sleep", "-s"] sources = ["readme"] [[commands.field]] id = "fullscreen" label = "Fullscreen" type = "boolean" option = ["--fullscreen", "-F"] sources = ["readme"] [[commands.field]] id = "broadcast" label = "Start with broadcast input" description = "Typing goes to every pane; dangerous." type = "boolean" option = ["--broadcast", "-b"] sources = ["readme"] [[commands.task]] id = "hosts" label = "Connect to hosts" fields = ["hosts", "login", "forward_agent"] required = ["hosts"] [[commands.task]] id = "cluster" label = "Connect to a cluster" fields = ["clusters", "profile", "tab_split"] required = ["clusters"] [[commands.group]] id = "basic" label = "Basic" fields = ["hosts", "clusters", "machines", "login", "forward_agent", "tab_split"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["profile", "direction", "columns", "rows", "sleep", "fullscreen", "broadcast"]