{
  "id": "trzsz-ssh",
  "name": "trzsz-ssh",
  "homepage": "https://github.com/trzsz/trzsz-ssh",
  "description": "A terminal SSH client with trzsz and zmodem file-transfer support.",
  "executables": [
    "tssh"
  ],
  "dotfiles": {
    "paths": [
      "[configHome]/tssh/tssh.conf",
      "~/.tssh.conf"
    ],
    "secret": [
      "~/.ssh/password"
    ]
  },
  "commands": {
    "format": 1,
    "label": "Connect with tssh",
    "description": "Log in to a host with tssh, an ssh-compatible client with trzsz file transfer and optional UDP mode. Tools such as --new-host, --enc-secret and the --install-* options are not covered.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": false
    },
    "source": [
      {
        "id": "help",
        "kind": "help",
        "url": "https://github.com/trzsz/trzsz-ssh/blob/main/tssh/args.go",
        "revision": "v0.1.27",
        "evidence": "Destination    string      `arg:\"positional\" help:\"alias in ~/.ssh/config, or [user@]hostname[:port]\"`\nCommand        string      `arg:\"positional\" help:\"command to execute instead of a login shell\"`\nForwardAgent   bool        `arg:\"-A,--\" help:\"enable forwarding the ssh agent connection\"`\nDisableTTY     bool        `arg:\"-T,--\" help:\"disable pseudo-terminal allocation\"`\nForceTTY       bool        `arg:\"-t,--\" help:\"force pseudo-terminal allocation\"`\nNoCommand      bool        `arg:\"-N,--\" help:\"do not execute a remote command\"`\nPort           int         `arg:\"-p,--\" placeholder:\"port\" help:\"port to connect to on the remote host\"`\nLoginName      string      `arg:\"-l,--\" placeholder:\"login_name\" help:\"the user to log in as on the remote machine\"`\nIdentity       multiStr    `arg:\"-i,--\" placeholder:\"identity_file\" help:\"identity (private key) for public key auth\"`\nConfigFile     string      `arg:\"-F,--\" placeholder:\"configfile\" help:\"an alternative per-user configuration file\"`\nProxyJump      string      `arg:\"-J,--\" placeholder:\"destination\" help:\"jump hosts separated by comma characters\"`\nDynamicForward bindArgs    `arg:\"-D,--\" placeholder:\"[bind_addr:]port\" help:\"dynamic port forwarding ( socks5 proxy )\"`\nLocalForward   forwardArgs `arg:\"-L,--\" placeholder:\"[bind_addr:]port:host:hostport\" help:\"local port forwarding\"`\nRemoteForward  forwardArgs `arg:\"-R,--\" placeholder:\"[bind_addr:]port:host:hostport\" help:\"remote port forwarding\"`\nDragFile       bool        `arg:\"--dragfile\" help:\"enable drag files and directories to upload\"`\nDebug          bool        `arg:\"--debug\" help:\"verbose mode for debugging, same as ssh's -vvv\"`\nZmodem         bool        `arg:\"--zmodem\" help:\"enable zmodem lrzsz ( rz / sz ) feature\"`\nTCP            bool        `arg:\"--tcp\" help:\"force standard TCP SSH (overrides UdpMode)\"`\nUDP            bool        `arg:\"--udp\" help:\"ssh over UDP like mosh (default: QUIC)\"`\nKCP            bool        `arg:\"--kcp\" help:\"[udp] use KCP protocol for ssh over UDP\"`\nQUIC           bool        `arg:\"--quic\" help:\"[udp] use QUIC protocol for ssh over UDP\"`\n"
      }
    ],
    "field": [
      {
        "id": "destination",
        "label": "Host",
        "description": "An alias from ~/.ssh/config, or [user@]hostname[:port].",
        "type": "string",
        "position": 0,
        "min": 1,
        "sources": [
          "help"
        ]
      },
      {
        "id": "command",
        "label": "Remote command",
        "description": "Run this instead of a login shell.",
        "type": "string",
        "position": 1,
        "effect": "exec",
        "sources": [
          "help"
        ]
      },
      {
        "id": "port",
        "label": "Port",
        "type": "integer",
        "option": [
          "-p"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "login_name",
        "label": "Login user",
        "type": "string",
        "option": [
          "-l"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "identity",
        "label": "Identity file",
        "type": "path",
        "option": [
          "-i"
        ],
        "multiple": true,
        "path": {
          "kind": "file",
          "role": "input",
          "must_exist": true
        },
        "sources": [
          "help"
        ]
      },
      {
        "id": "config_file",
        "label": "SSH config file",
        "type": "path",
        "option": [
          "-F"
        ],
        "path": {
          "kind": "file",
          "role": "input",
          "must_exist": true
        },
        "sources": [
          "help"
        ]
      },
      {
        "id": "proxy_jump",
        "label": "Jump hosts",
        "description": "Comma-separated jump hosts.",
        "type": "string",
        "option": [
          "-J"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "local_forward",
        "label": "Local forward",
        "description": "[bind_addr:]port:host:hostport.",
        "type": "string",
        "option": [
          "-L"
        ],
        "multiple": true,
        "sources": [
          "help"
        ]
      },
      {
        "id": "remote_forward",
        "label": "Remote forward",
        "description": "[bind_addr:]port:host:hostport.",
        "type": "string",
        "option": [
          "-R"
        ],
        "multiple": true,
        "sources": [
          "help"
        ]
      },
      {
        "id": "dynamic_forward",
        "label": "SOCKS proxy",
        "description": "[bind_addr:]port for dynamic port forwarding.",
        "type": "string",
        "option": [
          "-D"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "force_tty",
        "label": "Force terminal allocation",
        "type": "boolean",
        "option": [
          "-t"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "no_command",
        "label": "No remote command",
        "description": "Useful together with port forwarding.",
        "type": "boolean",
        "option": [
          "-N"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "forward_agent",
        "label": "Forward SSH agent",
        "type": "boolean",
        "option": [
          "-A"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "dragfile",
        "label": "Drag files to upload",
        "type": "boolean",
        "option": [
          "--dragfile"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "zmodem",
        "label": "Enable zmodem (rz / sz)",
        "type": "boolean",
        "option": [
          "--zmodem"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "udp",
        "label": "SSH over UDP",
        "description": "Needs tsshd on the server. QUIC by default.",
        "type": "boolean",
        "option": [
          "--udp"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "kcp",
        "label": "Use KCP (with UDP)",
        "type": "boolean",
        "option": [
          "--kcp"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "debug",
        "label": "Debug output",
        "type": "boolean",
        "option": [
          "--debug"
        ],
        "sources": [
          "help"
        ]
      }
    ],
    "task": [
      {
        "id": "login",
        "label": "Log in",
        "fields": [
          "destination"
        ],
        "required": [
          "destination"
        ]
      },
      {
        "id": "login_udp",
        "label": "Log in over UDP",
        "fields": [
          "destination",
          "udp"
        ],
        "required": [
          "destination"
        ],
        "set": {
          "udp": [
            true
          ]
        }
      },
      {
        "id": "tunnel",
        "label": "Local port forward",
        "fields": [
          "destination",
          "local_forward",
          "no_command"
        ],
        "required": [
          "destination",
          "local_forward"
        ],
        "set": {
          "no_command": [
            true
          ]
        }
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "destination",
          "command",
          "port",
          "login_name",
          "identity",
          "proxy_jump"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "config_file",
          "local_forward",
          "remote_forward",
          "dynamic_forward",
          "force_tty",
          "no_command",
          "forward_agent",
          "dragfile",
          "zmodem",
          "udp",
          "kcp",
          "debug"
        ]
      }
    ]
  }
}
