Secure Shell Manager

May 1, 2026 · View on GitHub

Streamline SSH connections with a simple terminal UI

version license CI Go report card OpenSSF Scorecard CII Best Practices Downloads Go version

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;drInstall


Features

  • Tag-based filtering#tag: admin,vpn comments 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 editingctrl+e opens $EDITOR, auto-reloads on save
  • Run remote commandsctrl+r opens a command prompt, runs via ssh -T
  • Config inspectionctrl+v shows all params in a side panel
  • --exit flag — connect and hand off the terminal, no lingering process
  • Theming--theme sky|matrix, extensible via themes.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
FlagShortDescription
--show-sshow config in side panel on launch
--exit-eexit after connecting (hand off terminal)
--order-oshow tagged hosts first
--config-ccustom SSH config path
--theme-tcolor theme: sky or matrix
--debug-ddebug mode with verbose log

All flags support env vars: SSM_SHOW, SSM_EXIT, SSM_ORDER, SSM_SSH_CONFIG_PATH, SSM_THEME, SSM_DEBUG.

Keys

KeyAction
enterconnect to selected host
ctrl+eedit SSH config in $EDITOR
ctrl+vtoggle config side panel
ctrl+rrun commands on host (no TTY)
ctrl+cclear filter / quit
tabswitch between SSH and MOSH
/filter hosts
q / escquit / 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

See all

Pull requests are welcome. Report a bug or request a feature by opening a new issue.

Show support

If ssm is 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