ssh -L, without the tab you dare not close.

Kestro runs your ssh: your keys, your ~/.ssh/config, your jump hosts. It adds the three options nobody ever types, checks the port is free before trying, and puts the state of every door in the menu bar instead of a tab you no longer dare close.

macOS 11+ · Windows soon

The same connection, twice

On the left the full line. On the right, what is left of it.

The command on the left is the one Kestro runs, options included, and the one it shows you in the tunnel’s settings.

Today

$ ssh -N \
    -L 127.0.0.1:5432:pg-staging.internal:5432 \
    -i ~/.ssh/id_prod \
    -o ServerAliveInterval=30 \
    -o ServerAliveCountMax=3 \
    -o ExitOnForwardFailure=yes \
    [email protected]
 
# and that tab stays open all day
client_loop: send disconnect: Broken pipe

With Kestro

One switch, in the menu bar.
 
The three options are already there.
The jump host comes from your ~/.ssh/config.
Nothing to leave open: no terminal is taken.
 
# and if you would rather keep the keyboard:
$ kestro with pg-staging -- npm run migrate

Point by point

What ssh can do, and what you have to know to type.

ssh -L by handWith Kestro
The program that opens the tunnelssh, the one on your machineThe same one, launched by Kestro
Your keys and your configuration~/.ssh/config, your keys, your agentthe same, read, never rewritten
The options that hold the connectionto know, and to type every timeServerAlive and ExitOnForwardFailure, set
The local port is already takenwithout ExitOnForwardFailure, ssh connects anyway: the tunnel does not existreported “free” or “taken” before you confirm
After the Mac sleepsrelaunch it, or install and configure autosshcomes back on its own, if you ticked it
Knowing what is openlsof, ps, or finding the right tab againthe menu bar icon, and one row per door
Ten tunnels at onceten tabs, or ten ssh -f to keep track ofone list, and “Open all”
Remote forwards (-R) and SOCKS (-D)yes, ssh does thoseno, Kestro only opens local forwards
In a script, in CI, on a serveryes, that is where ssh belongsno, Kestro is a desktop app
Costfree, it is already installed€29.99$29.99£25.99CHF 25.90CA$40.99A$45.99 once

Checked on 4 August 2026 · OpenSSH 9.x

What Kestro adds

Four things a command line cannot do.

None of them changes how the connection is made: your ssh does the work, with your keys. They are about everything around it.

  1. It sets the options people forget

    ServerAliveInterval, ServerAliveCountMax, ExitOnForwardFailure: without them an idle connection dies quietly after a few minutes, and a port already taken lets ssh open anyway. The shell is there, the tunnel is not. Kestro sets them on every tunnel, without asking you to know them.

  2. It checks first

    Is the local port free? The answer comes while you are filling in the form, not when your database client refuses to connect to a tunnel that never existed.

  3. It does not take a terminal

    An ssh -L occupies a tab you no longer dare close, or goes to the background with -f and becomes a PID you will have to find again. Kestro holds it alongside, and the state of each door reads from the menu bar.

  4. It puts everything in one list

    The SSH bastion, the Cloud SQL database, the Google VM through IAP, the EC2 through Session Manager: four tools and four syntaxes. One list, and the same switch.

CodeFileView14:43
Kestro1 tunnel open · 1 service isn’t answering
Filter tunnels⌘FNew tunnel
bastion-prodprodSSHshellbastion.kestro.internalclosed
notes-dbstagingPostgreslocalhost:5432pg-staging.eu-west-1.rdsopen
run-eventsprodMongolocalhost:27017mongo-prod.atlasclosed
⌘K palette↑↓ navigate␣ togglecloses if you click elsewhere
run-tracker , zsh
Applying 2 migrations to shop-staging-db…
20240612_add_orders_index ok
done in 1.4s
run-tracker , zsh
# every door, and which ones are open
tunnel notes-db ouvert :5432
tunnel run-events ouvert :27017
tunnel bastion-prod fermé

On your machine

Everything stays with you.

Your connections run from your computer to your servers, never through us.

  • No account

    Nothing to create, no password.

  • Your keys stay put

    SSH, Google Cloud, AWS: Kestro uses your own tools, locally.

  • No usage statistics

    We don’t know what you open, or when.

  • One exception

    Your licence renews with us. Nothing else leaves.

When ssh alone is enough

Three cases where Kestro is of no use.

Better said here than discovered after paying.

  • In a script, or on a server

    Kestro is a desktop app: it needs a session to be open. In a CI job, in a container, in a systemd unit, ssh is what you want, and nothing else.

  • If you need -R or -D

    Kestro only opens local forwards. A remote forward, a dynamic SOCKS proxy, agent forwarding: ssh does them, Kestro does not offer them. You can hand it your own command line, but then it is no longer the one composing it.

  • On Linux, or on Windows today

    Kestro only runs on macOS 11 and later. The Windows version is in the works; there is no Linux version planned.

Pricing

You pay once. That’s it.

A tool you open forty times a day shouldn’t send an invoice every month.

Kestro licence

€29.99$29.99£25.99CHF 25.90CA$40.99A$45.99€39.99$39.99£34.99CHF 33.90CA$54.99A$61.99 · Launch offer · upcoming price

1 computer · one-time

  • Every feature of the app, no tiers, no “Pro” edition
  • One year of updates included, then renew if you want to
  • The app stays yours, renewed or not
  • One key, the same on all your computers
  • Switch machines whenever you like, no limit
  • No account to create: the key arrives by email

Or download it for free first →

Refunded within 14 days, no questions asked.

Questions we get asked

Does Kestro replace ssh?

No, it runs it. The command executed is an ordinary ssh -N -L, with your options, and it is shown as-is in the tunnel’s settings. There is no reimplemented SSH library, no in-house protocol, no relay: it is your machine’s binary, with your agent and your keys.

Do I have to rewrite my ~/.ssh/config?

No, it is read as it is. Your hosts, your jump hosts, your users and your keys stay the reference, and Kestro never writes to it. If you edit the file, it re-reads it. The day you uninstall Kestro, your ssh works exactly as before.

What about autossh?

autossh does what it promises: it restarts a tunnel that drops. You have to install it, wrap it in a script per tunnel, and the state stays invisible unless you go looking. Kestro covers the same need without a script. And above all, recovery is ticked per tunnel, never by default: a door onto production does not reopen unless you asked for it.

Do my keys leave my machine?

No. Kestro reads none, copies none, stores none: it runs ssh the way you would, and your agent answers. Everything opens directly between your machine and your servers. Nothing passes through our infrastructure, and since there is no account, we do not even know that you are opening a tunnel.

Can I keep my own command?

Yes: a tunnel’s command can be replaced with yours, and Kestro then runs the line you wrote. That is the way out for a setup of your own: a -R, an exotic ProxyCommand. Everything else keeps working, including the state in the menu bar, except that the displayed port becomes your claim rather than its promise.

Does the trial ask for a card?

No, and it does not ask for an account either. You download, you get 7 full days. No card is asked for until you decide to buy.