Secure Shell Manager
May 1, 2026 · View on GitHub
Streamline SSH connections with a simple terminal UI
ssm is an SSH connection manager that works on top of your existing SSH config and installed ssh/mosh binaries. No setup required on remote systems.
tl;dr — Install
Features
- Tag-based filtering —
#tag: admin,vpncomments in your SSH config become searchable metadata - Fuzzy search — find hosts by name, hostname, user, or tag
- SSH/MOSH dual protocol — switch with
TAB - Live config editing —
ctrl+eopens$EDITOR, auto-reloads on save - Run remote commands —
ctrl+ropens a command prompt, runs viassh -T - Config inspection —
ctrl+vshows all params in a side panel --exitflag — connect and hand off the terminal, no lingering process- Theming —
--theme sky|matrix, extensible viathemes.go
Shoutout
@hackerschoice on X
Usage
ssm # launch the TUI
ssm admin # filter by #tag: admin
ssm -se vpn # --show --exit, filter by vpn tags
ssm -c ~/.ssh/other # use a custom config file
ssm -o # show tagged hosts first
ssm --theme sky # blue color scheme
ssm -d # debug mode with verbose logs
| Flag | Short | Description |
|---|---|---|
--show | -s | show config in side panel on launch |
--exit | -e | exit after connecting (hand off terminal) |
--order | -o | show tagged hosts first |
--config | -c | custom SSH config path |
--theme | -t | color theme: sky or matrix |
--debug | -d | debug mode with verbose log |
All flags support env vars: SSM_SHOW, SSM_EXIT, SSM_ORDER, SSM_SSH_CONFIG_PATH, SSM_THEME, SSM_DEBUG.
Keys
| Key | Action |
|---|---|
enter | connect to selected host |
ctrl+e | edit SSH config in $EDITOR |
ctrl+v | toggle config side panel |
ctrl+r | run commands on host (no TTY) |
ctrl+c | clear filter / quit |
tab | switch between SSH and MOSH |
/ | filter hosts |
q / esc | quit / exit filter |
Quickstart
New to SSH config? Start here. Otherwise skip to Install.
# backup any existing config
[ -f ~/.ssh/config ] && cp ~/.ssh/config ~/.ssh/config.bak
# create a config
cat <<'EOF' >> ~/.ssh/config
#tagorder # prioritize tagged hosts in list-view
Host myserver
#tag: production,web
User admin
HostName 10.0.0.5
Port 2222
IdentityFile ~/.ssh/id_rsa
Host terminalcoffee
#tag: shops
User adam
HostName terminal.shop
EOF
chmod 600 ~/.ssh/config
Install
Download a binary from releases, or install via script/brew:
# shell script (linux, macos, freebsd, openbsd)
curl -sSL https://github.com/lfaoro/ssm/raw/main/scripts/get.sh | bash
# homebrew (macos, linux)
brew install lfaoro/tap/ssm
# arch linux (AUR)
yay -S ssm-bin
# macos quarantine workaround (no paid signing key)
xattr -d com.apple.quarantine /path/to/ssm
Available for 4 OSes × 2 architectures: x86_64, arm64.
Build
Requires Go 1.26+
go install github.com/lfaoro/ssm@latest
# or clone and build
git clone https://github.com/lfaoro/ssm.git && cd ssm && make && bin/ssm
# sourcehut mirror
git clone https://git.sr.ht/~faoro/ssm && cd ssm && make && bin/ssm
Development
go build ./... # check compilation
go vet ./... # static analysis
go test -race ./... # tests with race detection
make build-static # static binary (CGO_ENABLED=0)
make release-dev # goreleaser snapshot (dry run)
Resources
Contributors
Pull requests are welcome. Report a bug or request a feature by opening a new issue.
Show support
If
ssmis useful to you, please consider giving it a ⭐.
- star the repo
- tell your friends
- buy a VM on vibee.sh
GitHub sponsor · BTC · XMR · FIAT