Lives in the menu bar
No Dock or taskbar clutter. A dynamic tray icon shows the count of connected tunnels at a glance, with a full menu one click away.
Tunnel Pilot manages your ssh -L forwards from the menu bar — save them once, toggle with a click, and let them auto-reconnect. Version 2 is a ground-up Rust rewrite that idles in ~15–30 MB instead of the old Flutter build's 100–200 MB.
For 99% of its life the window is closed and Tunnel Pilot is just watching a handful of tunnels. The Tauri build renders through the OS webview only when you open it, and does the real work in a lean Rust core — so it stops hogging memory it isn't using.
Measured RSS, window hidden, tray active — a ~5× smaller idle footprint.
Save a forward once and it's a click away forever — with the liveness, organization, and security a daily driver needs.
No Dock or taskbar clutter. A dynamic tray icon shows the count of connected tunnels at a glance, with a full menu one click away.
Define named ssh -L forwards — local port, remote host, remote port — and toggle them without retyping a command.
SSH keep-alive detects dropped sessions; exponential-backoff reconnect brings them back across flaky Wi-Fi and sleep/wake cycles.
Organize forwards by environment, filter by tag, and drive everything from a Cmd/Ctrl+K command palette — connect, edit, or bulk-start by keyboard.
Passwords live in your OS keychain (macOS Keychain, Windows Credential Manager, Secret Service), not in a plaintext file. Backups never export secrets.
After the first install, updates arrive automatically and are cryptographically verified with minisign against a key embedded in the app.
Click the menu-bar icon for a native menu of every tunnel, grouped exactly like the app. Each row is a status dot and its port — click to connect or disconnect. Start All, open Settings, Check for Updates, or Quit, all without opening the window.
Hit ⌘K from anywhere to fuzzy-search your tunnels and actions: connect, disconnect, edit, duplicate, run bulk group actions, or jump between screens — no mouse required.
A clean form to add a tunnel, the handful of settings that actually matter, and an activity log when you need to see what happened.
Grab a prebuilt release for your platform, or install with a single command. Then read the one-time first-launch note below.
.dmg · Intel + Apple Silicon
Download .dmg.exe · NSIS installer (x64)
Download .exe.AppImage · .deb · .rpm
DownloadButtons point to the latest GitHub release. All artifacts resolve once v2.0.0 is published — browse all releases.
curl -fsSL https://kalfian.github.io/tunnel-pilot/install.sh | bash
powershell -ExecutionPolicy Bypass -c "irm https://kalfian.github.io/tunnel-pilot/install.ps1 | iex"
The installer detects your platform, downloads the latest release, and launches the app.
Two things worth 30 seconds: how to open the unsigned app, and what happens to your existing tunnels.
Tunnel Pilot is open-source and not code-signed — signing certificates cost money this project doesn't have. Your OS may warn on first launch. This is expected and safe.
This only affects the installer / first launch. Auto-updates are cryptographically signed and verified (minisign) regardless — that protection is always on.
Your saved tunnels are preserved. Config lives outside the app bundle, so v2 detects and imports it automatically on first launch — and moves passwords into your OS keychain for you. The first hop from v1 is a one-time manual download; every update after that is automatic.
macOS note: if a duplicate "Tunnel Pilot" appears under Login Items, remove the leftover v1 entry in System Settings → General → Login Items.
SSH local port forwarding (ssh -L) creates a secure encrypted tunnel that forwards traffic from a local port on your machine to a remote host through an SSH server. It's how developers reach remote databases, internal dashboards, admin panels, or any TCP service behind a bastion — without exposing it to the public internet. Tunnel Pilot gives you a GUI to manage those tunnels instead of retyping terminal commands.
Version 2 is rewritten in Rust + Tauri. It renders through the OS webview only when the window is open and does its real work in a lean Rust core, so it idles in roughly 15–30 MB of RAM while sitting in the tray — versus the old Flutter build's ~100–200 MB. That footprint is measured with the window hidden after 60s idle, which is how the app spends 99% of its life.
Tunnel Pilot is open-source and unfunded, and OS code-signing certificates cost money (Apple Developer ID ~$99/yr, Windows certs cost hundreds), so the installer isn't code-signed. Your OS will warn on first launch: on macOS right-click → Open; on Windows click More info → Run anyway. Everything after that — the automatic updates — is cryptographically signed and verified with minisign.
No. Your configuration lives in the OS app-support directory, outside the app bundle, so replacing the app never touches it. On first launch, v2 detects your v1 config and imports it automatically, and moves saved passwords into your OS keychain. See the upgrade steps above for the one-time per-OS install.
ssh -L? Manual ssh -L is fine for one-offs. Tunnel Pilot saves your definitions, toggles them with one click, shows live status and stats, auto-reconnects across drops, organizes forwards into groups/tags, and gives you a Cmd/Ctrl+K command palette. It's the GUI the command deserves when tunneling is part of your daily workflow.
Yes — completely free and open source under the MIT License. No paid plans, subscriptions, telemetry, or accounts. The full source is on GitHub; build it yourself or download prebuilt releases for macOS, Windows, and Linux.