macOS · SSH · SFTP · Serial

Three of them.
One window.

Most SSH clients make you choose: a terminal that cannot move files, or a file manager that cannot give you a shell. And none of them speak to the USB-serial adapter on your desk.

macOS 13+ · Apple silicon and Intel · Notarized by Apple · Not on the Mac App Store
Sessions, two file panes and a terminal in one PortButler window
Pick a host on the left and it opens as a tab in this window. Five machines means five tabs — not five windows.
Measured, not quoted

108 MB/s, where scp gets 74.

Same Mac, same server, same 64 MB file. The reason is not micro-optimisation — it is the shape of the transfer. scp waits for each 32 KiB chunk to be acknowledged before asking for the next. PortButler keeps four streams in flight and writes each 256 KiB chunk in place.

Raspberry Pi 5 over 1GbESame machine (no wire limit)
PortButler108 MB/s465 MB/s
scp74 MB/s267 MB/s
sftp74 MB/s267 MB/s

The number is on screen while it runs. Megabytes per second and the time left, in the same units as the table — so you are not asked to take this page's word for it.

A transfer in progress showing megabytes per second and the time left

That 108 MB/s is 91% of the theoretical maximum of a gigabit wire. There is no room left to win on that cable, which is why the same-machine column exists. Every number here was measured on one Mac, and the method is published — BENCHMARK (Korean).

When it goes wrong

It tells you why it failed.

connection failed is not an error message. These five look identical on most clients and each needs a completely different fix.

What happenedWhat PortButler tells you
The port refused itThe machine is up. Check the port — many devices use 2222
Nothing answeredPowered off, or a firewall dropping packets silently
The name will not resolveCheck spelling, or whether it only exists on a VPN
Connected, no SSH greetingThat port is not SSH, or sshd is stuck
Something answered, not SSHA web server may be sitting on that port
Built for fleets

Five thousand boards, one password.

That is what an embedded rollout looks like: the same account and the same password on every unit. Save it once as a credential and type an address — the login comes from there. Change the password later and every machine follows, because they point at the credential, not a copy of it.

The password never appears

The list shows names and accounts. The password lives in this Mac's Keychain, is read the instant you press Return, and goes straight to the session — it is not rendered, and it never leaves this device.

It will not lock you out

Servers count failed logins. Most clients offer every key in your agent and get cut off before you are ever asked for a password. PortButler offers at most four, so an attempt is always left — and when the credential says password, it offers none.

Answering a sudo password prompt from a saved credential
A password prompt appears, the list opens over it, type to filter, Return to send.
Before you buy

What it does not do.

Listed first, because you will find out anyway and it is better you find out here.

PortButlerWhere it exists
Saved command snippetsNot yetTermius, WindTerm
Folder transfer, resume, queueNot yetTransmit, ForkLift
Same input to many sessionsNot yetSecureCRT, iTerm
Split panesTabs onlyiTerm, WindTerm
Serial in the same windowYesNo SSH client does this

It reads ~/.ssh/known_hosts and uses ssh-agent and the keys you already have. It imports ~/.ssh/config when you ask it to, and never writes to that file.

Pricing

Try it for 14 days.

$29one-time · not a subscription

When the trial ends it stops connecting — your session list stays. Major upgrades are $15. A ten-seat pack is $240.

macOS 13+ · Apple silicon and Intel · Notarized · Direct download, not the Mac App Store

Something not working, or missing? Open an issue — it is read by the person who wrote the code. The app has Help → Report an Issue… too, which fills in your macOS and app version.