Skip to main content

sshme

Interactive SSH profile selector for the terminal. Pick a host from your ~/.ssh/config with arrow keys or type to filter, then connect — or open an SFTP session, install your public key, or drop into a tmux window.

Installation

uv tool install sshme
# or
pip install sshme

Usage

sshme [options] [-- <ssh-flags>]

Run sshme with no arguments to open the selection menu. Navigate with arrow keys or type to filter. Recent connections appear at the top.

Options

Flag Description
-c, --config <path> SSH config file (default: ~/.ssh/config)
-l [USER] Login user — omit USER to be prompted
-i [KEYFILE] Identity file — omit KEYFILE to choose from ~/.ssh/
-t, --tmux Attach to or create a remote tmux session named ssh after connecting
--sftp Open an SFTP session instead of SSH
--copy-id Run ssh-copy-id to install your public key
-- Pass remaining arguments directly to ssh, sftp, or ssh-copy-id

Examples

# Select a host and connect
sshme

# Connect as a specific user
sshme -l root

# Open SFTP with a specific identity file
sshme --sftp -i ~/.ssh/work_key

# Choose an identity file interactively
sshme -i

# Forward a local port
sshme -- -L 8080:localhost:8080

# Install your public key on a host
sshme --copy-id

tmux Integration

When a tmux session is active, sshme opens the connection in a new window named SSH:<host>. If a window with that name already exists, sshme switches to it instead of opening a duplicate.

Config Files

sshme reads hosts from ~/.ssh/config, including any Include directives. Supplement or annotate those hosts with a TOML config file.

Discovery order:

  1. ~/.config/sshme/config.toml — user-wide defaults
  2. .sshme.toml or sshme.toml — project-local, searched upward from the current directory

Project-local entries shadow user-wide entries when names conflict.

Schema

# Add a host not in ~/.ssh/config
[[hosts]]
name = "devbox"
hostname = "192.168.1.42"
port = 2222
user = "dev"
description = "Local dev VM"

# Annotate an existing SSH config host with a description
[[hosts]]
name = "prod"
description = "Production cluster — handle with care"

All fields except name are optional. For hosts already in ~/.ssh/config, hostname, port, and user appear as menu hints; OpenSSH resolves the connection from its config. For hosts defined only in TOML, those fields drive the connection.

History

sshme records each selected profile in ~/.local/share/sshme/history.json and sorts recent hosts to the top of the menu. Set XDG_DATA_HOME to store the file elsewhere.

Metadata

Release files for sshme 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sshme 2.0.0
File Size Uploaded
sshme-2.0.0.tar.gz 7.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sshme 2.0.0
File Interpreter ABI Platform
sshme-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.6 kB

Release files / sshme-2.0.0.tar.gz

Download URL sshme-2.0.0.tar.gz
Size 7.4 kB
Tags Source
SHA-256 checksum
How to use checksums
eb98c8aa5732653462473d777f59701559cbb19ac9b4eb049c7abd2bcab93005
BLAKE2b-256 checksum
How to use checksums
844bbba3de7560bd95e3d626f69773e6bbe105ffcf3d527bdd1ddcb5c125b9da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"26.11","id":"zokor","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / sshme-2.0.0-py3-none-any.whl

Download URL sshme-2.0.0-py3-none-any.whl
Size 10.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eca8c25815b847ff454d057913cdf464830ddfe8f2693541b0e743c5e5ee8e00
BLAKE2b-256 checksum
How to use checksums
f45353ffbef028e32b0e8dc357e282e0607732a03f43c0188f2677dbc64325df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"26.11","id":"zokor","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page