
A terminal-native remote access suite for SSH, cloud inventories, provider-backed connectors, parallel commands, mux workspaces, file transfer, and monitoring.
ls + ssh = lssh
lssh is a terminal-native remote access suite for SSH workflows, cloud inventories, and provider-backed connectors.
It lets you select hosts from OpenSSH config, lssh config, or provider inventories, then operate them through native SSH or connector backends such as AWS SSM, EC2 Instance Connect Endpoint, WinRM, Telnet, and custom providers.
Use it for interactive shells, parallel commands, mux workspaces, file transfer, sync, mount, and monitoring. Connector-backed hosts expose only the operations their connector supports.
brew install blacknon/lssh/lssh
go install github.com/blacknon/lssh/cmd/lssh@latest
Provider-backed inventory and connector features use separate provider executables.
If you install only cmd/lssh, those provider binaries are not installed automatically.
For local development, install the bundled providers with:
mise run provider_install
For release builds, either install the all-in-one lssh-complete_* archive or add the matching lssh-providers_* archive from GitHub Releases.
For more installation details, including other options and platform-specific notes, see docs/install.md.
Already using ~/.ssh/config?
Just run:
lssh
Want to generate an lssh config from your existing SSH config?
lssh --generate-lssh-conf > ~/.lssh.toml
lssh is built for a simple workflow:
![]() Interactive host picker
Select one or more hosts from the TUI. |
![]() Parallel command execution
Pick hosts and run the same command across them. |
![]() Mux workflow
Open the multi-pane terminal workflow. |
![]() Mux workflow with command
Start the mux UI and launch a command immediately. |
You can still target a single host directly when you already know where to connect:
lssh -H my-server
For more details about config formats and settings, see cmd/lssh/README.md.
Want to try lssh quickly with a ready-to-run local playground?
Start with demo/README.md.
For the telnet connector + multi-hop provider flow, use demo-telnet-provider/README.md.
lssh supports both your existing OpenSSH config and its own config format.
If you want to get started quickly, you can keep using ~/.ssh/config as-is. If you want richer host metadata and workflow-oriented settings, you can move to an lssh config instead.
You can also generate an lssh config from your existing SSH config:
lssh --generate-lssh-conf > ~/.lssh.toml
Even after moving to lssh config, you can still point it at your existing OpenSSH config and load hosts from there:
[sshconfig.default]
path = "~/.ssh/config"
For more details about config formats and settings, see docs/configuration.md.
lssh can work with more than static SSH config entries.
Providers let it pull hosts from external inventory sources, resolve secrets just before connect, and use non-SSH connection backends such as cloud-managed connectors.
In v0.10.0, provider-backed inventory and secret workflows are best treated as beta.
Connector-backed access beyond native SSH is still experimental, especially for cloud-managed runtimes and non-SSH backends.
If you want to try provider-oriented flows locally, start from these demos:
For the provider architecture and protocol overview, start with provider/README.md. Category details are also documented under inventory, connector, secret, and mixed.
These provider implementations are currently bundled in this repository.
|
provider-inventory-proxmox Build host entries from Proxmox inventory. |