lazyssh is a terminal user interface for managing SSH servers locally.
The goal is to make SSH access feel like using tools such as lazygit, lazydocker, or k9s: fast, keyboard-first, and built for people who live in the terminal.
Instead of remembering IP addresses, usernames, ports, SSH key paths, notes, and tags, you keep them in a local vault and launch SSH sessions from a TUI.
- Store SSH server entries locally.
- Keep server metadata easy to browse and edit.
- Launch SSH using the same terminal session that opened
lazyssh. - Avoid cloud sync or remote dependencies.
- Keep the UI stable, dark, keyboard-driven, and DevOps-focused.
- Use SQLite as the persistence layer.
- Keep application state in memory while the UI is running.
- Main dashboard with:
- server list
- group filter list
- server details panel
- overview panel
- footer shortcut bar
- Add, edit, and delete server entries.
- Manage groups:
- create groups
- edit group names
- delete groups
- Assign existing groups when adding or editing a server.
- Search servers by name, host, username, group, and tags.
- Edit notes and tags.
- Render tags as colorful terminal chips.
- Copy common server values.
- Store all data in SQLite.
- Launch SSH key based connections through the normal shell.
lazyssh stores data in a local SQLite database.
The database path is chosen according to the operating system:
- Linux/Unix:
$XDG_DATA_HOME/lazyssh/lazyssh.dbor~/.local/share/lazyssh/lazyssh.db - macOS:
~/Library/Application Support/lazyssh/lazyssh.db - Windows:
%APPDATA%\lazyssh\lazyssh.dbor%LOCALAPPDATA%\lazyssh\lazyssh.db
No data is synced to the cloud.
| Shortcut | Action |
|---|---|
↑ / ↓ |
Move through the server list |
← / → |
Switch group filter |
Enter |
Connect to the selected server |
a |
Add a new server |
e |
Edit selected server |
d / Delete |
Delete selected server |
g |
Open group manager |
/ |
Search |
c |
Copy server value |
n |
Edit notes |
t |
Edit tags |
? |
Open help |
q |
Quit |
Ctrl+C |
Quit |
| Shortcut | Action |
|---|---|
Tab |
Next field |
Shift+Tab |
Previous field |
← / → on Group |
Cycle existing groups |
← / → on Auth |
Cycle auth type |
Space on Favorite |
Toggle favorite |
Enter |
Save |
Esc |
Cancel |
| Shortcut | Action |
|---|---|
↑ / ↓ |
Select group |
n |
New group |
e |
Edit selected group |
d / Delete |
Delete selected group |
Enter |
Save new or edited group |
Esc |
Close |
When a group is renamed, servers assigned to that group are updated automatically.
When a group is deleted, servers assigned to it are unassigned.
| Shortcut | Action |
|---|---|
| Type text | Update search query |
Backspace |
Remove character |
Enter |
Apply search |
Esc |
Clear search and close |
| Shortcut | Action |
|---|---|
| Type text | Edit content |
Backspace |
Remove character |
Shift+Enter |
Insert newline |
Enter |
Save |
Esc |
Cancel |
| Shortcut | Action |
|---|---|
↑ / ↓ |
Select value |
Enter |
Copy selected value |
Esc |
Cancel |
For SSH key based entries, lazyssh constructs a command like:
ssh -i ~/.ssh/prod.pem ubuntu@103.21.244.10 -p 22Before launching SSH, lazyssh restores the terminal, leaves the alternate screen, disables raw mode, and then starts ssh in the same terminal session.
When the SSH session ends, lazyssh does not reopen automatically.
Password authentication is not implemented yet. For production use, password support should avoid plain SQLite password storage and use either the normal OpenSSH password prompt or encrypted local secret storage.
Current release: v0.1.0
Prebuilt binaries are published for Linux, macOS, and Windows. Users do not need Rust, Cargo, or a system SQLite installation.
You only need OpenSSH installed and available as ssh in your PATH.
Linux and macOS users can install the latest release with:
curl -fsSL https://raw.githubusercontent.com/abhishek-Rj/lazyssh/main/install.sh | shTo install a specific version:
curl -fsSL https://raw.githubusercontent.com/abhishek-Rj/lazyssh/main/install.sh | sh -s -- v0.1.0The installer downloads the matching GitHub Release archive, extracts it, and installs lazyssh into:
~/.local/bin
If ~/.local/bin is not in your PATH, the installer prints the shell command needed to add it.
Download the archive for your operating system from the GitHub Releases page.
For v0.1.0, the release assets are:
| Operating System | CPU Architecture | Asset |
|---|---|---|
| Linux | x86_64 | lazyssh-v0.1.0-linux-x86_64.tar.gz |
| macOS | Intel x86_64 | lazyssh-v0.1.0-macos-x86_64.tar.gz |
| macOS | Apple Silicon aarch64 | lazyssh-v0.1.0-macos-aarch64.tar.gz |
| Windows | x86_64 | lazyssh-v0.1.0-windows-x86_64.zip |
Linux and macOS:
tar -xzf lazyssh-v0.1.0-linux-x86_64.tar.gz
cd lazyssh-v0.1.0-linux-x86_64
mkdir -p ~/.local/bin
cp lazyssh ~/.local/bin/Use the matching macOS archive name on macOS.
Windows:
- Download
lazyssh-v0.1.0-windows-x86_64.zip. - Extract the archive.
- Move
lazyssh.exeto a directory in yourPATH.
If you installed to ~/.local/bin and your shell cannot find lazyssh, add it to your PATH.
For bash:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcFor zsh:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrcThen run:
lazysshEach release includes a SHA256SUMS file.
Download the checksum file and verify your archive:
sha256sum -c SHA256SUMSOn macOS, if sha256sum is unavailable, use:
shasum -a 256 lazyssh-v0.1.0-macos-aarch64.tar.gzThen compare the output with the matching line in SHA256SUMS.
Building from source requires Rust:
cargo build --releaseThe binary will be available at:
target/release/lazyssh
Maintainers publish a new release by creating and pushing a version tag:
git tag v0.1.0
git push origin v0.1.0GitHub Actions automatically builds release binaries, packages them, generates SHA256SUMS, and attaches all assets to the GitHub Release.
The release workflow currently publishes:
lazyssh-v0.1.0-linux-x86_64.tar.gzlazyssh-v0.1.0-macos-x86_64.tar.gzlazyssh-v0.1.0-macos-aarch64.tar.gzlazyssh-v0.1.0-windows-x86_64.zipSHA256SUMS
This project is licensed under the MIT license. See LICENSE.