v2.0 · Rewritten in Rust + Tauri

SSH port forwarding that actually sits still in your tray.

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.

15–30 MB idle RAM in the tray
$0 MIT-licensed, open source
macOS · Windows · Linux
The headline

A tray utility should feel like one.

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.

v1 · Flutter ~100–200 MB
v2 · Rust + Tauri ~15–30 MB
Everything, from the tray

Built for people who live in tunnels

Save a forward once and it's a click away forever — with the liveness, organization, and security a daily driver needs.

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.

Local port forwarding

Define named ssh -L forwards — local port, remote host, remote port — and toggle them without retyping a command.

Auto-reconnect & keep-alive

SSH keep-alive detects dropped sessions; exponential-backoff reconnect brings them back across flaky Wi-Fi and sleep/wake cycles.

Groups, tags & ⌘K

Organize forwards by environment, filter by tag, and drive everything from a Cmd/Ctrl+K command palette — connect, edit, or bulk-start by keyboard.

Keychain for passwords

Passwords live in your OS keychain (macOS Keychain, Windows Credential Manager, Secret Service), not in a plaintext file. Backups never export secrets.

Signed auto-updates

After the first install, updates arrive automatically and are cryptographically verified with minisign against a key embedded in the app.

The menu-bar menu

Toggle everything without opening the window

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.

  • Status at a glance — green connected, grey idle, red on error.
  • Grouped like the app — Production, Staging and Ungrouped, in order, with a status line up top.
  • Keyboard shortcuts — Settings ⌘,, Check for Updates ⌘U, Quit ⌘Q.
Command palette

Drive it entirely from the keyboard

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.

  • Fuzzy search across every tunnel and command.
  • Full keyboard path — focus order and shortcuts throughout.
  • Resizable, responsive window that reflows for narrow or wide.
A closer look

Everything you'd expect, nothing you wouldn't

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.

Free download

Get Tunnel Pilot 2.0

Grab a prebuilt release for your platform, or install with a single command. Then read the one-time first-launch note below.

Linux

.AppImage · .deb · .rpm

Download

Buttons 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

The installer detects your platform, downloads the latest release, and launches the app.

Before you run it

First launch & upgrading from v1

Two things worth 30 seconds: how to open the unsigned app, and what happens to your existing tunnels.

Opening the unsigned app

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.

  • macOS Gatekeeper says the developer "cannot be verified." Right-click (or Control-click) the app in Finder → OpenOpen. Once only. (Or System Settings → Privacy & Security → "Open Anyway".)
  • Windows SmartScreen shows "Windows protected your PC." Click More infoRun anyway.
  • Linux AppImage: chmod +x Tunnel-Pilot*.AppImage then run it. .deb/.rpm install normally.

This only affects the installer / first launch. Auto-updates are cryptographically signed and verified (minisign) regardless — that protection is always on.

Upgrading from Tunnel Pilot 1.x

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 Drag the new .dmg over /Applications — it overwrites v1 in place.
  • Windows Delete your old portable Tunnel Pilot folder, then run the v2 installer.
  • Linux Fresh install — v1 never shipped on Linux.

macOS note: if a duplicate "Tunnel Pilot" appears under Login Items, remove the leftover v1 entry in System Settings → General → Login Items.

FAQ

Common questions

What is SSH local port forwarding?

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.

How lightweight is version 2, really?

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.

Why is the app unsigned — is it safe?

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.

Will I lose my tunnels upgrading from v1?

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.

How is this different from typing 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.

Is Tunnel Pilot free and open source?

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.