A tiny, stylish SSH host manager for the terminal, built on top of
gum for interactive picking and
rich for themed output panels.
Save your SSH hosts once, then jump to any of them (or your favorite) with
a single command — no more memorizing ssh user@10.0.0.somewhere.
- Fuzzy-pickable host list via
gum choose - One-command jump to a saved "favorite" host (
gg) - Add / edit / delete / favorite hosts through a guided menu
- Per-host custom SSH port (defaults to 22, only prompted when needed)
- Purple/cyan themed
gumprompts andrichpanels - Success/error confirmation panels after every action — no more silent saves
- Input guards reject aliases/users/hosts starting with
-(prevents ambiguous values from being misread as command flags) - Hosts stored as plain JSON at
~/.config/gto.json— easy to inspect, back up, or hand-edit - No shell-injection footguns: all subprocess calls use argument lists, never raw shell string interpolation
- Python 3.7+
guminstalled and on yourPATH(gto/ggwill tell you if it's missing)sshclient installed
Install directly from this repo with pipx:
pipx install git+https://github.com/wolfercarter-cpu/GTO-sshOr, if you've cloned the repo locally:
git clone https://github.com/wolfercarter-cpu/GTO-ssh
cd GTO-ssh
pipx install .This installs two commands globally:
| Command | What it does |
|---|---|
gto |
Opens the host picker (or config to manage hosts) |
gg |
Jumps straight to your favorite host |
If you're developing locally and want to reinstall after making changes:
pipx install --force .Jump to a host — opens a fuzzy picker of all saved hosts:
gtoJump to your favorite — no picker, straight to the host you've marked as favorite:
gg(equivalent to gto --fav)
Manage hosts — add, delete, or set a favorite:
gto configThis opens a menu:
- Add — prompts for an alias (nickname), SSH username, IP/hostname, and optional port (blank = 22). If the alias already exists you'll be asked whether to overwrite it.
- Edit — pick a saved host and update any of its fields (pre-filled with the current values). Renaming to an alias already used by a different host is blocked.
- Delete — pick a saved host to remove, with a confirmation prompt.
- Favorite — pick a saved host to mark as your one-key (
gg) target.
If you run gto and have no hosts saved yet, it drops you straight into
the Add flow.
Hosts are stored as JSON at:
~/.config/gto.json
Example:
[
{
"alias": "homelab",
"user": "otakumafia",
"ip": "192.168.1.42",
"port": "22",
"fav": true
},
{
"alias": "gpu-box",
"user": "otakumafia",
"ip": "10.0.0.7",
"port": "2222",
"fav": false
}
]port is optional — hosts saved before the port field existed still work
and default to 22.
Feel free to hand-edit this file directly if you'd rather skip the gum
prompts.
pipx uninstall gto-ssh