Open Source · MIT License · Written in Go

Manage SSH
with less hassle
every day.

Profiles, tunnels, transfers, and secure sessions in one simple terminal workflow.

$ curl -fsSL https://raw.githubusercontent.com/bonheur15/zet-ssh/main/scripts/install.sh | sh
scroll
zet — SSH Workspace
󰘦 profiles
⇄ prod-web-01
tunnels
vault
Selected Profile
Nameprod-web-01
Host10.0.1.42
Port22
Userdeploy
Authvault:key/prod
Tagsproduction web
↵ connect   e edit   d delete   / search
Connected · prod-web-01 · 10.0.1.42 · 34ms
deploy@prod-web-01:~$ systemctl status nginx
 nginx.service - A high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service)
Active: active (running) since Tue 2025-01-14
deploy@prod-web-01:~$ df -h /
Filesystem  Size Used Avail Use% Mounted
/dev/sda1   100G 44G  52G  46% /
deploy@prod-web-01:~$
Active Tunnels (3)
:8080 → localhost:80 @ prod-web-01 LOCAL
:5432 → db.internal:5432 @ bastion-eu LOCAL
:9000 → localhost:9000 @ dev-sandbox REMOTE
Generated:  ssh -L 8080:localhost:80 deploy@10.0.1.42
n new tunnel   space toggle   d delete
vault.zet · Unlocked · Auto-lock in 4:38
key/prodRSA-4096 · id_rsa_prod
key/stagingEd25519 · id_ed_staging
pass/web01●●●●●●●●●●●
pass/db●●●●●●●●●●●●●
token/api●●●●●●●●●●●●●●●●
a add secret   v reveal   l lock vault
NORMAL · profiles · 6 total zet-ssh v1.0 · MIT

Everything SSH,
nothing else.

[P]
Profile Manager

Named connections with fuzzy search. Press / to filter, Enter to connect. Import from raw ssh user@host strings instantly.

fuzzy-search jump-hosts agent-forwarding
[V]
Encrypted Vault

Single vault.zet file. Master password modal on startup. Auto-locks after idle timeout. Secrets never hit plaintext logs — masked in every view.

AES-256 auto-lock memory-safe
[T]
Tabs & Panes

Built-in multiplexer. Split views vertically or horizontally. Switch tabs with Alt+1-9. No tmux dependency required.

splits tab-bar focus-cycling
[F]
Dual-Pane File Browser

Midnight Commander-style. Local ↔ Remote. Navigate with hjkl, copy with c. Progress bars. Text preview pane. Pure SCP/SFTP under the hood.

SFTP SCP dual-pane preview
[U]
Tunnel Builder

Visual list of local and remote port forwards. Green/red health indicators. Toggle with Space. Always shows the generated SSH command — no black boxes.

local-forward remote-forward health-check
[K]
Command Palette

Global action search via Ctrl+K. Saved snippets with ${var} interpolation. TUI prompts for variable values before execution.

snippets variables autofill
[L]
Transparent Log

Collapsible bottom pane. Every operation logged: connections, vault events, file transfers, generated SSH commands. Redacted where secrets could leak.

auditable redacted command-log

Your hands never
leave the keyboard.

Navigation
Open Command Palette
CtrlK
New Tab / Connection
CtrlN
Switch Tab
Alt1-9
Toggle Sidebar
Ctrl\
Show Help
?
Fuzzy Search Profiles
/
Actions
Connect to Profile
Enter
Toggle Tunnel
Space
Copy File (FM)
c
Move Up / Down
jk
Split Pane Vertical
Ctrl-
Lock Vault
l

Go-native.
Charm ecosystem.

Built on Bubble Tea's event loop model. Every component — sidebar, terminal, vault modal — is an isolated model composable into the main program state. No runtime deps. Single binary.

TUI Bubble Tea + Lip Gloss charmbracelet
SSH golang.org/x/crypto/ssh native Go
SFTP pkg/sftp file transfers
VAULT Encrypted Gob / AES-256-GCM local only
CONFIG JSON profiles + ~/.ssh/config sync read-only

Structured for
contribution.

zet-ssh/ ├── cmd/ │ └── zet/ │ # CLI entry point ├── internal/ │ ├── tui/ │ │ # Bubble Tea models │ │ ├── components/ │ │ │ # Reusable widgets │ │ └── pages/ │ │ # Full-screen views │ └── core/ │ ├── vault/ │ │ # Encryption logic │ ├── profiles/ │ │ # Profile manager │ ├── ssh/ │ │ # SSH engine │ └── sftp/ │ # File transfers ├── go.mod ├── README.md └── LICENSE # MIT
View on GitHub

One command.
Full workspace.

Auto-detects your OS and architecture. No dependencies.

$ curl -fsSL https://raw.githubusercontent.com/bonheur15/zet-ssh/main/scripts/install.sh | sh
Then run: zet to open the workspace, or zet connect <name> to jump directly.

Build locally
in minutes.

Clone, build, then run. You only need Go installed.

git clone https://github.com/bonheur15/zet-ssh.git cd zet-ssh go build -o zet ./cmd/zet ./zet # optional: ./zet connect <name> # optional: ./zet run <name> -- <command>