Releases: blacknon/lssh
Version 0.10.0
v0.10.0
lssh-suite 0.10.0 is a substantial update that expands the project from an SSH-focused command suite into a broader provider-backed remote access suite. This release adds provider-driven inventory, secret resolution, and connector-backed access workflows, while continuing to improve transfer, mux, and pipeline-oriented operations across the suite.
Highlights
- Added provider-backed inventory, connector, secret, and mixed workflows.
- Added bundled provider implementations for AWS, Azure, GCP, Proxmox, OpenSSH, Telnet, WinRM, 1Password, Bitwarden, OS keychain, and custom-script flows.
- Expanded connector-oriented access for AWS SSM, EC2 Instance Connect Endpoint, WinRM, and Telnet targets.
- Improved transfer and sync behavior across
lscp,lsftp, andlssync, including progress rendering and lifecycle handling. - Added
%difftolsshell, reusing thelsdiffworkflow from inside the interactive shell. - Improved
lspipesession reuse, host targeting, and session-local index selection.
Provider and connector support
This release introduces the provider model more explicitly as part of the public shape of the project.
Provider roles are grouped into:
inventoryconnectorsecretmixed
Bundled providers in this repository now include:
provider-inventory-proxmoxprovider-connector-opensshprovider-connector-telnetprovider-connector-winrmprovider-mixed-aws-ec2provider-mixed-azure-computeprovider-mixed-gcp-computeprovider-secret-onepasswordprovider-secret-bitwardenprovider-secret-os-keychainprovider-secret-custom-script
Current maturity in v0.10.0 is intentionally mixed:
- provider-backed inventory and secret workflows are
beta - connector-backed access beyond native SSH is still
experimental
Command and workflow improvements
lscp- improved progress output and parallel transfer behavior
- improved per-file failure handling without stopping the entire run
lsftp- improved transfer lifecycle handling and progress behavior
lssync- improved progress labeling and sync workflow polish
lsshell- added
%diff - improved parsing for provider-style host names
- added
lspipe- improved session creation / reuse flow
- added session-local host index targeting
- improved single-host output behavior for local tools such as
vimdiff
Packaging and installation
This release expands the packaging layout for the suite.
Release artifacts now include:
lssh-complete_*: full suite commands, bundled providers, and shell completionslssh_*: full suite commandslssh-core_*:lsshlssh-transfer_*: transfer, diff, and mount commandslssh-monitor_*:lsmonlssh-sysadmin_*:lsshell,lsmux,lspipelssh-providers_*: bundled provider executables
Notes:
provider-secret-os-keychainis included only in macOS provider releaseslsshfsremains unsupported on Windows and is excluded there- provider binaries are not installed by
go install github.com/blacknon/lssh/cmd/lssh@latest
Compatibility notes
lsshfsis supported on Linux and macOSlsshfsis not supported on Windowsprovider-connector-winrmcurrently supports command execution only- connector-backed behavior depends on the selected connector capability set
Quality and release polish
This release also includes broader cleanup around:
- CLI version/help consistency
- provider debug log redaction for secret-like fields such as
passandpasses - provider documentation consistency
- installation guidance for bundled provider executables
- release artifact layout for full, split, provider-only, and complete packages
Thanks
Thanks to everyone testing the provider, connector, transfer, mux, and pipeline workflows during the v0.10.0 cycle.
Version 0.9.0
v0.9.0
lssh-suite 0.9.0 is a substantial update that expands the project from a TUI-first SSH client into a broader multi-command SSH operations suite. This release adds new tools for diff, mount, and pipe-oriented workflows, improves configuration compatibility with OpenSSH, and strengthens packaging, completion, and test coverage across the project.
Highlights
-
Added
lsdiff: a synchronized TUI diff viewer for comparing remote files across multiple SSH hosts. -
Added
lsshfs: a single-host SSH mount command with OS-specific local mount backends.- Linux uses FUSE
- macOS uses NFS
- Windows is not supported in 0.9.0
-
Added
lspipe: a persistent pipe-oriented runner that keeps a selected host set in the background and reuses it from local shell pipelines. -
Added OpenSSH config import and
--generate-lssh-confsupport to help bootstraplsshconfig from existing~/.ssh/config. -
Expanded conditional config matching for more context-aware host selection and overrides.
-
Improved installation, packaging, shell completions, and release layout for the full suite.
New commands
lsdiff
Compare the same remote path across multiple hosts, or compare explicit @host:/path targets in a synchronized multi-pane TUI.
lsshfs
Mount one remote directory from one selected host using the same inventory and host-selection flow as lssh. In 0.9.0, supported client platforms are:
- Linux: FUSE
- macOS: NFS
- Windows: unsupported
lspipe
Create a reusable background session for a chosen host set, then execute commands or bridge local workflows through pipes/FIFOs.
Configuration improvements
- Added generation of minimal
lsshconfig from OpenSSH host entries. - Added fallback flow when an
lsshconfig file does not exist. - Improved conditional matching and config resolution behavior.
- Kept parser/generator behavior aligned by using the vendored
ssh_configfork internally.
Packaging and installation
This release provides both a full suite package and split packages:
lssh_*: full suitelssh-core_*:lsshlssh-transfer_*: transfer/diff/mount toolslssh-monitor_*:lsmonlssh-sysadmin_*:lsshell,lsmux,lspipe
Shell completions for bash, zsh, and fish are included.
Compatibility notes
lsshfsis supported on Linux and macOS in0.9.0.lsshfsis not supported on Windows in0.9.0and is excluded from Windows release packaging.
Quality and test coverage
This release also adds broader regression coverage for:
- build/install layout
- CLI version/help metadata
lspipesession and execution behaviorlsshfsrunner/background/unmount behavior- config fallback and OpenSSH import behavior
Packaging and release artifact fixes
This release also fixes packaging gaps from earlier artifacts.
For example, the v0.8.0 darwin_arm64 package did not include lssync in bin/, even though lssync was part of the intended build/install command set for that release.
In v0.9.0, the release workflow and package layout were updated so the expected command set is bundled more consistently across platforms and package types. This also includes newer suite commands such as lsmux, lsdiff, lspipe, and lsshfs where supported, with platform-specific exclusions applied where necessary, such as lsshfs on Windows.
Thanks
Thanks to everyone testing the new workflows and especially the real-machine validation around lsshfs before release.
Version 0.8.0
lssh v0.8.0
v0.8.0 is a larger minor release from v0.7.1, bringing together several major feature additions.
This release introduces the new TUI multiplexer lsmux and the new one-way sync command lssync. It also includes many practical improvements for day-to-day operations, such as conditional config switching, opening terminals directly from lsmon, and launching the mux UI from lssh.
Highlights
-
Added
lsmux- Introduces a tmux-like pane-based SSH client
- Lets you view and operate on multiple hosts at the same time
- Supports command panes, broadcast input, and pane-local file transfer
- Reuses the existing
lsshhost inventory as-is
-
Added
lssync- Introduces a one-way sync command built on SSH/SFTP
- Supports local-to-remote, remote-to-local, and remote-to-remote sync without requiring
rsyncon the remote side - Supports deleting destination-only entries with
--delete
-
Added conditional config overrides with
match/when.*- You can now switch settings based on local IP, OS, terminal type, environment variables, and more
- This makes it easier to handle things like proxy switching by network or hiding hosts depending on where you are connecting from
Improvements
-
Enhanced
lsmon- You can now open a terminal for the selected host from the top-style viewer with
Ctrl + T --share-connectallows terminal sessions to reuse the monitor connection
- You can now open a terminal for the selected host from the top-style viewer with
-
Enhanced
lssh- Added
-Pto launch thelsmux-compatible mux UI directly fromlssh - Added support for
--holdand--allow-layout-changeto improve multi-host command workflows
- Added
-
Enhanced
lsshell- Added
%sync, allowing one-way sync operations directly from inside the shell
- Added
-
Improved transfer workflows
- Refined path resolution and transfer handling around
lscp,lsftp, andlssync
- Refined path resolution and transfer handling around
-
Updated documentation and packaging
- Reworked the README to make command roles clearer
- Updated package layout to make installation by use case easier
Notes
lssh,lscp, andlsftpare considered stablelssync,lsmon,lsshell, andlsmuxare currently considered betalsmuxandlssyncare the main additions in this release, so feedback is especially welcome
Thanks
Main changes included in this release:
- Added
lsmux - Added
lssync - Added conditional configuration with
match/when - Added terminal integration to
lsmon - Added
lssh -P - Updated documentation and demo environment
Version 0.7.1
v0.7.1
This release is a bugfix release focused on stability improvements around ControlMaster, forwarding, CI, and the demo environment.
Fixes
- Fixed forwarding behavior when
ControlMasteris enabled - Fixed local forward (
-L) under ControlMaster-enabled connections - Fixed dynamic forward / SOCKS5 (
-D) under ControlMaster-enabled connections - Fixed remote forward (
-R) handling and added demo coverage for it - Fixed forwarding-related behavior by updating bundled
go-sshlib - Fixed SFTP/subsystem handling used by ControlMaster-based forwarding paths
- Fixed demo E2E coverage by adding ControlMaster forwarding scenarios
- Fixed vendored dependency state so demo builds use the updated
go-sshlib - Fixed GitHub Actions setup to use the Go version declared in
go.mod - Fixed GitHub Actions warnings by updating deprecated Node 20-based actions
- Fixed GitHub Actions cache restore instability by disabling
setup-gobuilt-in cache in workflows - Fixed demo sshd-based containers to include
ncfor easier diagnostics and checks
CI / Workflow Updates
- Updated
actions/checkouttov5 - Updated
actions/setup-gotov6 - Updated
actions/upload-artifacttov6 - Updated
actions/download-artifacttov7 - Updated
jdx/mise-actiontov4 - Replaced
actions/create-release@v1withgh release create
Demo / Test Updates
- Added ControlMaster-enabled demo targets
- Added demo checks for:
- local forwarding
- dynamic forwarding
- remote forwarding
Notes
- This release is recommended for users relying on
ControlMaster - Especially recommended if you use port forwarding or SOCKS proxy mode
Version 0.7.0
Release Highlights
This release brings a major update across the lssh suite, with new demo and test infrastructure, stronger SSH session reuse, better proxy support, and substantial improvements to lsshell, lsftp, and lscp.
Additionally, the sub-projects lsmon and lsshell have been integrated.
Added
- Added a full Docker Compose based demo environment under
demo/ - Added end-to-end tests for the demo environment
- Added examples for:
- password authentication
- public key authentication
- SSH proxying
- HTTP proxying
- SOCKS5 proxying
- nested proxy chains
- bastion-style access
local_rcbased shell customization
- Added
ControlMaster/ControlPersistsupport - Added tunnel support with
--tunnel - Added background execution support with
-f - Added new
misetasks for demo usage and testing - Added CI workflows for release, tests, and demo E2E verification
Improved
- Improved
lsshellwith process substitution support and better local command integration - Improved
lsshellcompletion and duplicate server handling - Improved
lsftpcommand set, including copy-related operations - Improved
lscpstability, including parallel copy behavior - Improved proxy routing support, including multi-hop SSH/HTTP/SOCKS combinations
- Improved OpenSSH config handling and ControlPersist integration
- Improved Windows build compatibility across the project
- Reworked and expanded the documentation across the main README, command READMEs, and demo guide
Fixed
- Fixed several
lsshellissues aroundoutexec, server completion, and command behavior - Fixed
lscp/lsftpissues related to Windows support - Fixed ControlPersist and proxy route handling in SSH connections
- Fixed multiple demo and CI issues discovered while adding E2E coverage
- Bugfix #146, #105
Notes
- This release includes substantial internal refactoring across command entrypoints, configuration loading, SSH connection handling, monitor support, and vendored dependencies.
- The demo environment is now one of the easiest ways to validate real-world connection patterns locally before using them in production.
Version 0.6.14
- Upgrade packages
- Add knownhost check
Version 0.6.13
- bugfix: when selecting a server from the second page onwards using the mouse.
- bugfix: Corrected to disconnect if ssh connection is made using Proxy when ssh connection fails.
- update go-sshlib. v0.1.16 to v0.1.18
Version 0.6.12
Version 0.6.11
- Debug. where keys in Server config were not inherited when they were of int type.
Version 0.6.10
- update go-sshlib (bugfix)