Skip to content

Commit 02cedcc

Browse files
committed
update.
1 parent fcd2406 commit 02cedcc

9 files changed

Lines changed: 36 additions & 65 deletions

File tree

.github/workflows/release.yaml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,7 @@
55
name: Release Job.
66

77
on:
8-
push:
9-
branches:
10-
- master
11-
paths-ignore:
12-
- '**/README.md'
8+
workflow_dispatch:
139

1410
permissions:
1511
contents: write

README.md

Lines changed: 24 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ lssh
1313
<img src="./images/demo.gif" width="720" />
1414
</p>
1515

16-
lssh is a terminal-native remote access suite for SSH workflows, cloud inventories, and provider-backed connectors.
16+
`lssh` is a terminal-native remote access suite for SSH workflows, cloud inventories, and provider-backed connectors.
1717

18-
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.
18+
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.
1919

20-
Use it for interactive shells, parallel commands, mux workspaces, file transfer, sync, mount, and monitoring. Connector-backed hosts expose only the operations supported by that connector.
20+
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.
2121

2222
- works with your existing SSH config
2323
- interactive host selection
@@ -60,7 +60,7 @@ lssh
6060

6161
Want to generate an `lssh` config from your existing SSH config?
6262

63-
```bash id="w2e9m1"
63+
```bash
6464
lssh --generate-lssh-conf > ~/.lssh.toml
6565
```
6666

@@ -121,17 +121,17 @@ For the telnet connector + multi-hop provider flow, use [`demo-telnet-provider/R
121121

122122
## OpenSSH config and lssh config
123123

124-
lssh supports both your existing OpenSSH config and its own `lssh` config format.
124+
`lssh` supports both your existing OpenSSH config and its own config format.
125125

126-
If you want to get started quickly, you can keep using `~/.ssh/config` as-is. If you want more advanced host metadata and workflow-oriented settings, you can use an `lssh` config instead.
126+
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.
127127

128128
You can also generate an `lssh` config from your existing SSH config:
129129

130130
```bash
131131
lssh --generate-lssh-conf > ~/.lssh.toml
132132
```
133133

134-
And even after moving to `lssh` config, you can still point it at your existing OpenSSH config to load hosts from there:
134+
Even after moving to `lssh` config, you can still point it at your existing OpenSSH config and load hosts from there:
135135

136136
```toml
137137
[sshconfig.default]
@@ -143,42 +143,18 @@ For more details about config formats and settings, see [docs/configuration.md](
143143
## Providers
144144

145145
`lssh` can work with more than static SSH config entries.
146-
Providers let it pull hosts from external inventory sources, resolve secrets just before connect, or use non-SSH connection backends such as cloud-managed connectors.
147-
148-
Provider capabilities are grouped into a few roles:
149-
150-
- `inventory`: generate `server` entries from APIs or cloud inventories
151-
- `connector`: define how a resolved target is actually reached
152-
- `secret`: resolve `*_ref` values at execution time
153-
- `mixed`: combine multiple roles in one provider implementation
146+
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.
154147

155-
This is what makes workflows such as cloud inventory lookup, secret-manager-backed credentials, and connector-backed sessions possible without hardcoding them into the base config format.
148+
At a high level, providers fall into four roles: `inventory`, `connector`, `secret`, and `mixed`.
149+
That split makes cloud inventory lookup, secret-manager-backed credentials, and connector-backed sessions possible without hardcoding those workflows into the base config format.
156150

157151
If you want to try provider-oriented flows locally, start from these demos:
158152

159153
- [demo/README.md](./demo/README.md): core SSH, proxy chains, and general multi-host workflow examples
160154
- [demo-telnet-provider/README.md](./demo-telnet-provider/README.md): provider-managed telnet connector flow, including direct telnet access and telnet behind a double SSH hop
161155

162-
<table>
163-
<tr>
164-
<td valign="top" width="25%">
165-
<strong><a href="./provider/inventory/README.md">Inventory</a></strong><br />
166-
Generate <code>server</code> entries from cloud or API-backed inventories.
167-
</td>
168-
<td valign="top" width="25%">
169-
<strong><a href="./provider/connector/README.md">Connector</a></strong><br />
170-
Reach targets through connector-backed runtimes such as managed sessions.
171-
</td>
172-
<td valign="top" width="25%">
173-
<strong><a href="./provider/secret/README.md">Secret</a></strong><br />
174-
Resolve <code>*_ref</code> values from secret stores at execution time.
175-
</td>
176-
<td valign="top" width="25%">
177-
<strong><a href="./provider/mixed/README.md">Mixed</a></strong><br />
178-
Combine inventory, connector, or secret roles in one provider.
179-
</td>
180-
</tr>
181-
</table>
156+
For the provider architecture and protocol overview, start with [provider/README.md](./provider/README.md).
157+
Category details are also documented under [inventory](./provider/inventory/README.md), [connector](./provider/connector/README.md), [secret](./provider/secret/README.md), and [mixed](./provider/mixed/README.md).
182158

183159
### Bundled providers
184160

@@ -239,15 +215,15 @@ These provider implementations are currently bundled in this repository.
239215
<tr>
240216
<td valign="top" width="33%">
241217
<strong><a href="./provider/secret/provider-secret-bitwarden/README.md">provider-secret-bitwarden</a></strong><br />
242-
Resolve secret references from Bitwarden.
218+
Resolve secret references from [Bitwarden](https://bitwarden.com/).
243219
</td>
244220
<td valign="top" width="33%">
245-
<strong><a href="./provider/secret/provider-secret-custom-script/README.md">provider-secret-custom-script</a></strong><br />
246-
Resolve secret references through custom local scripts.
221+
<strong><a href="./provider/secret/provider-secret-onepassword/README.md">provider-secret-onepassword</a></strong><br />
222+
Resolve secret references from [1Password](https://1password.com/).
247223
</td>
248224
<td valign="top" width="33%">
249-
<strong><a href="./provider/secret/provider-secret-onepassword/README.md">provider-secret-onepassword</a></strong><br />
250-
Resolve secret references from 1Password.
225+
<strong><a href="./provider/secret/provider-secret-custom-script/README.md">provider-secret-custom-script</a></strong><br />
226+
Resolve secret references through custom local scripts.
251227
</td>
252228
</tr>
253229
<tr>
@@ -260,11 +236,9 @@ These provider implementations are currently bundled in this repository.
260236
</tr>
261237
</table>
262238

263-
For the provider architecture and protocol overview, start with [provider/README.md](./provider/README.md).
264-
265239
## Tools in the lssh suite
266240

267-
The lssh project includes multiple tools for SSH-centered workflows.
241+
The `lssh` project includes multiple tools for SSH-centered workflows.
268242

269243
<table>
270244
<tr>
@@ -354,14 +328,14 @@ The lssh project includes multiple tools for SSH-centered workflows.
354328
## Alternatives
355329

356330
If you are evaluating `lssh`, these projects are also worth a look.
357-
They overlap in some workflows, but usually cover a narrower slice of what the `lssh` suite does.
331+
They overlap with parts of the suite, but each usually covers a narrower slice of the overall workflow.
358332

359333
| Project | Closest `lssh` command(s) | Main focus | How it differs from `lssh` |
360334
| --- | --- | --- | --- |
361-
| [`sshs`](https://github.com/quantumsheep/sshs) | [`lssh`](./cmd/lssh/README.md) | TUI-based SSH host picker | Similar single-tool host selection UX, but `lssh` also covers parallel execution, forwarding, mux workflow, and provider/connector-backed hosts. |
362-
| [`ClusterSSH (cssh)`](https://github.com/duncs/clusterssh) | [`lssh -P`](./cmd/lssh/README.md), [`lsmux`](./cmd/lsmux/README.md), [`lsshell`](./cmd/lsshell/README.md) | Multi-host interactive administration | Strong for broadcast typing into multiple terminals; `lsshell` and `lsmux` are closer when you want synchronized shell workflows inside one suite. |
363-
| [`pssh`](https://github.com/lilydjwg/pssh) | [`lssh -p`](./cmd/lssh/README.md), [`lscp`](./cmd/lscp/README.md), [`lssync`](./cmd/lssync/README.md) | Parallel command execution and transfer tools | Good fit for parallel CLI jobs, while `lssh` adds TUI host selection, interactive workflows, and a more integrated multi-command toolset. |
364-
| [`tmuxinator`](https://github.com/tmuxinator/tmuxinator) | [`lssh -P`](./cmd/lssh/README.md), [`lsmux`](./cmd/lsmux/README.md) | tmux session layout management | Great for predefined tmux workspaces, but it is not an SSH host picker or transfer tool by itself; `lsmux` is SSH-oriented from the start. |
335+
| [`sshs`](https://github.com/quantumsheep/sshs) | [`lssh`](./cmd/lssh/README.md) | TUI-based SSH host picker | Similar in spirit to a focused host picker, but `lssh` also covers parallel execution, forwarding, mux workflows, and provider/connector-backed targets. |
336+
| [`ClusterSSH (cssh)`](https://github.com/duncs/clusterssh) | [`lssh -P`](./cmd/lssh/README.md), [`lsmux`](./cmd/lsmux/README.md), [`lsshell`](./cmd/lsshell/README.md) | Multi-host interactive administration | Strong for broadcast typing into multiple terminals; `lsshell` and `lsmux` are a closer fit when you want synchronized shell workflows inside one suite. |
337+
| [`pssh`](https://github.com/lilydjwg/pssh) | [`lssh -p`](./cmd/lssh/README.md), [`lscp`](./cmd/lscp/README.md), [`lssync`](./cmd/lssync/README.md) | Parallel command execution and transfer tools | A good fit for parallel CLI jobs, while `lssh` adds TUI host selection, interactive workflows, and a more integrated multi-command toolset. |
338+
| [`tmuxinator`](https://github.com/tmuxinator/tmuxinator) | [`lssh -P`](./cmd/lssh/README.md), [`lsmux`](./cmd/lsmux/README.md) | tmux session layout management | Great for predefined tmux workspaces, but it is not an SSH host picker or transfer tool by itself. `lsmux` is SSH-oriented from the start. |
365339

366340
### How the `lssh` suite is different
367341

@@ -371,7 +345,7 @@ They overlap in some workflows, but usually cover a narrower slice of what the `
371345
- [`lsmux`](./cmd/lsmux/README.md) provides a pane-based SSH workspace rather than only session templating.
372346
- [`lspipe`](./cmd/lspipe/README.md) keeps selected hosts reusable from local pipelines and automation.
373347

374-
## Licence
348+
## License
375349

376350
[MIT](LICENSE.md)
377351

cli_help_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func TestCLIAppsExposeExpectedVersionStrings(t *testing.T) {
2626
}
2727

2828
for _, tt := range cases {
29-
if !strings.Contains(tt.version, "lssh-suite 0.9.1") {
29+
if !strings.Contains(tt.version, "lssh-suite 0.10.0") {
3030
t.Fatalf("%s version = %q", tt.name, tt.version)
3131
}
3232
}

cmd/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ Each command has its own `main.go` and delegates the actual application logic to
1414
- [`lscp`](./lscp/README.md): A file transfer client that provides an SCP-style interface.
1515
- [`lssync`](./lssync/README.md): A one-way sync command over SSH/SFTP with optional destination pruning.
1616
- [`lsdiff`](./lsdiff/README.md): A synchronized TUI diff viewer for comparing remote files across multiple hosts.
17-
- [`lsshfs`](./lsshfs/README.md): A single-host mount command that uses FUSE on Linux and NFS on macOS. Windows is not supported in `0.10.0`.
17+
- [`lsshfs`](./lsshfs/README.md): A single-host mount command that uses FUSE on Linux and NFS on macOS. Windows is currently not supported.
1818
- [`lsmon`](./lsmon/README.md): A TUI monitor for viewing the status of multiple hosts side by side.
1919
- [`lspipe`](./lspipe/README.md): A persistent pipe-oriented runner for reusing selected SSH hosts from local shell pipelines. FIFO bridge features are Unix-only.

cmd/lspipe/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,5 +157,5 @@ echo 'cat' > ~/.cache/lssh/lspipe/fifo/default/ops/web01.cmd
157157
- Windows supports normal `lspipe` session creation and command execution through the local TCP fallback.
158158
- `--mkfifo` creates `all.*` pipes plus one `host.*` set per host: `.cmd`, `.stdin`, `.out`.
159159
- Write stdin into `.stdin`, then write the remote command into `.cmd`; read the result from `.out`.
160-
- `--mkfifo` is currently Unix-only. Windows does not support the FIFO bridge workflow in `0.10.0`.
160+
- `--mkfifo` is currently Unix-only. Windows does not support the FIFO bridge workflow yet.
161161
- The default config search order is `~/.lssh.toml`, `~/.lssh.yaml`, `~/.lssh.yml`, then `~/.lssh.conf`.

cmd/lsshfs/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ It reuses the same host selection and SSH config flow as `lssh`, but exposes the
88

99
- Linux clients use `FUSE`
1010
- macOS clients use `NFS`
11-
- Windows is not supported in `0.10.0`
11+
- Windows is currently not supported
1212
- connector-backed mounts that rely on `sftp_transport` are currently supported on Linux and macOS
1313

1414
The command runs in the background by default and automatically unmounts when the SSH connection is lost.
@@ -82,7 +82,7 @@ lsshfs --list-mounts
8282
- `lsshfs` supports only one host at a time.
8383
- `@host:/path` is the preferred remote path format, but `host:/path` is still accepted for compatibility.
8484
- On macOS, the local mount is created with `mount_nfs`.
85-
- On Windows, `lsshfs` is not supported in `0.10.0`.
85+
- On Windows, `lsshfs` is currently not supported.
8686
- The default config search order is `~/.lssh.toml`, `~/.lssh.yaml`, `~/.lssh.yml`, then `~/.lssh.conf`.
8787

8888
### mount options

docs/install.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ brew install blacknon/lssh/lssh
104104
- `lsshfs` uses a different local mount backend on each OS:
105105
- Linux: FUSE support and a working `fusermount`/FUSE setup are required.
106106
- macOS: `mount_nfs` is used locally, so the client must allow local NFS mounts.
107-
- Windows: `lsshfs` is not supported in `0.10.0`.
107+
- Windows: `lsshfs` is currently not supported.
108108
- The repository intentionally replaces `github.com/kevinburke/ssh_config` with the vendored fork at `./internal/ssh_config` so the generated config and parser behavior stay in sync with `lssh`.
109109

110110
## Shell completion

internal/lsshfs/backend.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func backendForGOOS(goos string) (Backend, error) {
3535
case "darwin":
3636
return BackendNFS, nil
3737
case "windows":
38-
return "", fmt.Errorf("lsshfs does not support windows in 0.10.0")
38+
return "", fmt.Errorf("lsshfs does not support windows")
3939
default:
4040
return "", fmt.Errorf("lsshfs does not support %s", goos)
4141
}

provider/connector/README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
Connector Providers
22
===================
33

4-
Connector providers are not implemented yet, but this directory is reserved for the provider type that describes how a resolved target can actually be used.
4+
Connector providers describe how a resolved target can actually be used once inventory and config resolution are complete.
5+
This repository already includes working connector-capable providers and mixed providers that expose connector behavior.
56

67
This document uses `connector` as the provider category name.
78
If older discussion or notes use the spelling `connecter`, they refer to the same design direction.
89

9-
Current prototype providers:
10+
Current connector-capable providers:
1011

1112
- [`provider-connector-openssh`](./provider-connector-openssh/README.md)
1213
- [`provider-connector-telnet`](./provider-connector-telnet/README.md)
1314
- [`provider-connector-winrm`](./provider-connector-winrm/README.md)
1415

15-
Planned design-only connector families:
16+
Planned or future-facing connector families:
1617

1718
- `provider-connector-openssh`
1819
- cloud-specific connectors that may internally use OpenSSH-compatible transport

0 commit comments

Comments
 (0)