Features
SSH Tunnel wraps the ssh -M master-socket workflow and layers management,
monitoring, and recovery on top. Each link below goes to the guide that covers
the feature in depth.
Tunnel management
Section titled “Tunnel management”- Manage multiple tunnels from the menu bar and Settings sidebar.
- Add, delete, and reorder tunnels in Settings; the menu follows the same order.
- Start or stop each tunnel with an Active toggle.
- Autosave tunnel edits, quick forward edits, labels, timing values, and the global logging level.
See Settings and Using the App.
Status at a glance
Section titled “Status at a glance”- Show tunnel state through the menu bar icon color: idle (gray), connecting / reconnecting (yellow), connected (green), failed (red).
- Open connected localhost ports from clickable port pills.
See Using the App.
Self-healing connections
Section titled “Self-healing connections”- Run scheduled health checks with
ssh -O checkplus TCP probes on every forwarded port. - Run Check Now for an immediate health check and macOS notification.
- Reconnect automatically with exponential backoff when the master drops, unless the tunnel was stopped manually.
- Stop retrying after 10 consecutive failed attempts and surface the last error.
- Reconnect on network changes through
NWPathMonitorand on system wake. - Detect local port conflicts before starting, name the holder, and offer a
session-only remap of a busy config
LocalForwardport onto a free local port.
See Health Checks & Reconnects.
Quick Forwards
Section titled “Quick Forwards”- Add remote ports through Quick Forward from the menu bar or Settings.
- Remove quick forwards with
ssh -O canceland reapply saved quick forwards after reconnects or app restarts.
See Quick Forwards.
Start at Login
Section titled “Start at Login”- Enable Start at Login per tunnel; the macOS login item is enabled while at
least one tunnel has it on (via
SMAppService). - Delay Start at Login until the network is ready, with an optional startup TCP check for VPN-only endpoints.
See Settings to configure it and Health Checks & Reconnects for the readiness behavior.
Robust process lifecycle
Section titled “Robust process lifecycle”- Launch as a single-instance app. Opening a second copy activates the existing app and exits the new process.
- Own the master
sshprocess and stop app-started masters on normal quit. - Adopt a live master at the app control path after relaunch.
- Clean stale control sockets before each start.
- Use hardened SSH defaults:
ServerAliveInterval=15,ServerAliveCountMax=3,ConnectTimeout=10, andExitOnForwardFailure=yes.
See SSH Command Mapping and Terminal Coexistence.
Diagnostics & shortcuts
Section titled “Diagnostics & shortcuts”- Run diagnostics for required fields,
ssh -G, SSH config forwards, ControlPath safety, and local port availability. - Menu keyboard shortcuts:
⌘ + ,for Settings,⇧ + ⌘ + ?for How to Use, and⌘ + Qto quit.
See Settings and Debugging & Logs.