Upstream: FTP & SFTP Client
Upload & Sync to Servers & S3
Only for Mac
Free · In‑App Purchases
Now with Amazon S3, Backblaze B2 and Cloudflare R2, auto-upload on save, and a free 7-day trial of FULL. SSH keys and site import are free for everyone.
Upstream is the FTP, SFTP, FTPS and S3 client made for the Mac: native, fast, and without a subscription.
Two panes — your Mac on one side, the server on the other. Drag files between them or straight from the Finder, check them in the Info panel, and let the transfer queue do the rest: in parallel, resuming where it stopped, even with the window closed.
FREE — NOT A DEMO
• FTP, FTPS (explicit and implicit) and SFTP, with password or SSH key
• Unlimited saved sites, passwords kept in the macOS Keychain
• Import your servers from FileZilla and ~/.ssh/config, keys and jump hosts included
• Parallel transfer queue with resume, speed and time left
• Create, rename, move, delete and change permissions; cut, copy and paste
• Info panel with preview, and quick edits of text files without leaving the window
• Home with pinned and recent sites, tags, command palette (⌘K), menu bar item
• Host keys and certificates checked on every connection
• Works with strict FTPS servers that require TLS session reuse
UPSTREAM FULL — ONE PURCHASE, NO SUBSCRIPTION
Try everything free for 7 days.
• Amazon S3, Backblaze B2, Cloudflare R2, Wasabi and MinIO: buckets open as folders
• Auto-upload on save: work locally, and every file you save goes to the server
• Folder sync with a dry run before anything moves, saved pairings and .syncignore
• Directory comparison and synchronized navigation
• Edit remote files in your own editor, re-uploaded on every save
• Remote file preview, recursive search on the server, download as ZIP
• Batch rename with a live preview
• Multiple tabs, jump hosts (bastion), bandwidth limit
• Sites synced through iCloud, site export, history as CSV
• Shortcuts: upload files to a site from Shortcuts and Finder Quick Actions
BUILT FOR MACOS
Written in Swift and sandboxed, with native file icons, Quick Look, Dark Mode and a keyboard shortcut for everything. No Java, no Electron, no account.
A bug or an idea? Help ▸ Send Bug / Suggestion — every message is read.
more CLOUD STORAGE (FULL)
- Amazon S3, Backblaze B2, Cloudflare R2, Wasabi and MinIO: buckets open as
folders in the same two panes as your servers, with the queue, sync and
auto-upload.
- Large files upload in parts, downloads resume, and renaming a folder happens
on the server.
AUTO-UPLOAD ON SAVE (FULL)
- Turn it on and work in your local folder: every file you save goes up to the
server on its own, through the transfer queue. Temporary editor files and
your .syncignore rules are respected. Nothing is ever deleted on the server.
INFO PANEL
- Option-Command-I opens a panel with the preview and details of the selection:
images, code, permissions, owner, public URL.
- Edit Here: fix a line in a text file without leaving the window. Straight
quotes stay straight.
BATCH RENAME (FULL)
- Find and replace (also with regular expressions), prefix, suffix, numbering,
letter case and extension, with a live preview. Conflicts block the rename
instead of overwriting a file.
FREE FOR EVERYONE
- SSH key authentication.
- Importing sites from FileZilla and ~/.ssh/config, including keys and jump
hosts. A welcome screen on first launch walks you through it.
- Quick Connect now speaks SFTP and FTPS, not only plain FTP.
TRY FULL
- A free 7-day trial of everything in FULL. No charge and nothing renews.
FTPS
- Works with servers that require TLS session reuse on the data connection
(the default of vsftpd and FileZilla Server): before, you could log in but
not list or transfer.
AND MORE
- Speed and time left for every transfer and for the whole queue.
- The number of active transfers on the Dock icon.
- Shortcuts: "Upload Files to Site" and "Open Site", also as Finder Quick
Actions. sftp://, ftps:// and ftp:// links open in Upstream.
- A cleaner main window: the home uses the whole width when you are not
connected, and the toolbar follows the new macOS design.
Thanks to everyone who asked for S3, ProxyJump and strict FTPS on Product Hunt.
1.5.0 Sep 29
MOVING FILES
- Drag a file or a folder onto any sub-folder to move it. It happens on the
server: no bytes travel, so the dates cannot be lost.
- Drag onto the path bar to move something up a level, or into a sibling folder.
- Cut, Copy and Paste (Cmd-X, Cmd-C, Cmd-V) in both panes, on whole selections.
- "Move to…" and "Copy to…" open a folder picker that reaches anywhere on the
server, including folders you have never visited.
- Copying uses the server's own copy where it exists. Where it does not, Upstream
says so before you start, rather than quietly using twice your bandwidth.
- A folder can no longer be dropped inside itself, and a name that is already
taken asks what to do instead of overwriting in silence.
DATES
- Downloads and uploads keep the file's original modification date instead of
stamping it with the time of the transfer. This works in the queue, in drag and
drop, and in edit-with-auto-upload.
- Servers that cannot set dates are detected and reported.
FOLDER SYNC — RELIABILITY
- On SFTP, uploads now carry the modification date across. They never did, and
silently, which made "Size + date" see every file as changed, for ever.
- An unreadable remote folder is now an error instead of "the folder is empty".
With mirror mode on, that difference was a proposal to delete everything.
- A mirror that would empty the destination is stopped and explained.
- Deletions are never pre-ticked in the plan.
- Files with accented names are no longer sent to a path the server does not
have: each side now keeps its own spelling.
- The summary says what was transferred, what failed and what is still pending.
FOLDER SYNC — SPEED AND CLARITY
- The preview no longer walks into .git and node_modules on the server, and no
longer asks for a timestamp it will not use. On a typical web project this is
the difference between minutes and seconds.
- Queuing thousands of files no longer freezes the app.
- Both the scan and the run show what they are doing and can be stopped.
- Saved pairings: a local folder, a remote folder and the options under one name.
"Repeat Last Sync" is in the command palette and the Transfers menu.
- Warnings where there used to be silence: deletions do not travel in two-way
mode, remote names differing only in case collide on your Mac, and remote
symlinks are skipped.
Thanks to everyone who reported something to make Upstream better.
1.4.0 Sep 12
Upstream 1.3 is the release you notice before you use it. The app was never short on features — it was short on air. Every surface has been rebuilt around one idea: an interface you read at a glance instead of squinting at.
A LOOK THAT BREATHES
- Bigger text everywhere. Nothing on screen is smaller than 11 points any more, and the protocol and date on a server card are no longer 9-point grey.
- Real depth instead of borders. Cards lift off the background with a softshadow in light mode and a clear tonal step in dark, so the app stops looking like a grid of fences.
- The home shows fewer, wider server cards — each one readable from across the desk, with the protocol in a pill that turns amber when the connection is not encrypted.
A SIDEBAR THAT READS LIKE A LIST
- Taller rows with the site badge, the address underneath, and a hover state that tells you which row will answer the click. It was missing before.
- Selected, connected and hovered now look different from each other, because each carries a different kind of signal instead of three shades of the same colour.
A TOOLBAR THAT SAYS WHERE YOU ARE
- The connected site now sits in the toolbar: badge, name and the remote folder you are actually in — the one thing up there that changes while you work.
- Every action has its name next to the symbol. No more hovering over nine mute icons to find out what they do.
- The four FULL tools are grouped together under a single lock instead of four tiny badges scattered among the free ones.
TABS THAT BEHAVE LIKE TABS
- Right-click a tab for Close Other Tabs, Close Tabs to the Left, Close Tabs to the Right and Close All Tabs. Entries that would close nothing are disabled rather than sitting there doing nothing.
- Tabs are taller and now join the panel below them instead of floating above it, with the site colour running edge to edge along the top.
COMFORTABLE OR COMPACT — YOUR CHOICE
- New in Settings: row density. Comfortable gives the file lists room; compact fits more files on screen for anyone comparing two long trees. Text size stays the same in both — compact means more rows, not harder reading.
STABILITY: NOTHING WAITS FOREVER
- A server that accepts the connection and then goes quiet no longer hangs the app. Every reply now has a deadline — a short one for commands, a long one for the reply that ends a transfer, so a big upload is never failed just as it succeeds.
- Folder Sync can no longer get stuck waiting for a queue that will never empty, and cancelling it actually stops it. If the wait is cut short, modification times are not applied: a file that never arrived should not look like it did.
- Closing the window no longer kills your transfers. The app stays in the menu bar and the queue keeps running, which is what the menu bar item promised in 1.2 and could not deliver.
- Fixed a crash when downloading a folder as a zip after changing the local directory, and a case where reopening the window could replace live tabs with yesterday's saved session.
Everything from 1.2 is where you left it: the 21 themes, your tags, saved views and pinned servers all carry over untouched.
1.3.0 Aug 25
Upstream 1.2 is about the moment before the transfer: finding the right server,
picking up where you left off, and trusting that the app will still be there
tomorrow.
A HOME INSTEAD OF AN EMPTY PANE
- Opening Upstream now shows a home: the servers you actually worked on last,
the ones you pinned, and the full list — with the count of what does not fit
on screen, so nothing disappears in silence.
- Search finds servers by name, host, user and tag, the same fuzzy way as the
command palette: type "prd" and "production" comes up.
- Pin the three servers you live on. They stay at the top, in the order you
pinned them.
TAGS AND SAVED VIEWS
- Tags are now a real list, not a line of text: add them, remove them, and see
how many servers use each one.
- Save a tag filter under a name — "Clients", "Production" — and it becomes a
single entry in the sidebar and a chip on the home.
- Everything you tagged in 1.1 keeps working, on this Mac and on the other one
through iCloud, even if it is still running the previous version.
PICK UP WHERE YOU LEFT OFF
- Tabs reopen on launch: the same servers, the same folders, the same active
tab. They come back disconnected on purpose — Upstream will not ask for a
string of passwords the moment you open it.
- A reopened tab shows the server you were on and the remote folder you were in,
with a Reconnect button that takes you straight back there.
- The window remembers its size and position again. It used to forget them at
every launch, and this release explains why: it was saving them under a name
that changed every time.
MENU BAR
- A new menu bar item: pinned and recent servers, the state of the queue, pause
and resume everything, and a way back to the window. Its symbol changes with
the queue — idle, working, paused.
- Notifications when transfers finish or fail, only while Upstream is in the
background. With the window in front you can already see everything, and a
notification you do not need is a notification you turn off.
LIGHT, DARK, AND 21 THEMES THAT STAY READABLE
- Light and dark are now a choice of yours, not just the system's.
- The 21 accent themes are all still here — and all of them now keep enough
contrast to be read on both backgrounds. Most of the catalogue did not, and
nobody had measured it before.
- VoiceOver: a server in the sidebar now says its name, whether it is connected,
which protocol it uses and — first of all — whether the traffic is in the
clear. Before it said a name and nothing else.
IT WILL BE THERE TOMORROW
- A damaged data file no longer means an app that crashes at every launch. It
starts anyway, says so, and never touches the file on disk: your servers stay
where they are while you make a copy.
- The storage now has a versioned schema, so this update and the next ones can
add fields without losing what you saved.
- Turning iCloud sync on or off now moves your saved passwords and keys between
the local keychain and the iCloud one. Before, they seemed to vanish.
1.2.0 Jul 30
--- What's New ---
Upstream 1.1 is about control: over your transfers, and over what the app tells
you is happening.
TRANSFER QUEUE
- Pause, resume and cancel any transfer, individually or all at once. Paused
transfers resume from exactly where they stopped, not from the beginning.
- Reorder what is waiting by dragging, or send an urgent file straight to the
top.
- The queue now survives quitting the app. Reconnect and Upstream offers to
resume what was interrupted — it never restarts transfers on its own.
TRANSFER HISTORY
- A new window (Transfers ▸ Transfer History, ⇧⌘Y) records every transfer,
successful or failed, with speed, duration and the exact error message.
Grouped by day, searchable, filterable by server and outcome. Export to CSV
with Upstream FULL.
- The history stays on this Mac and is never synced to iCloud.
ON THE SERVER
- Calculate the size of a remote folder, with a live count and a Stop button.
- Copy the public web URL of a remote file, if you map your site's web root in
the site settings — handy every day if you work on websites.
- Copy the SSH command for a server, ready to paste into Terminal.
- Search the whole server (FULL): find a file anywhere in the remote tree by
name or pattern, filter by extension, and limit how deep to look.
- Jump hosts (FULL): reach servers that are only accessible through an SSH
bastion. ProxyJump and ProxyCommand entries are imported from your ssh config
and wired up automatically.
FIXES THAT MATTER
- Upload progress was wrong. On some connections the progress bar lagged far
behind what had actually been sent, so a transfer could appear half-finished
when it was already complete — which then made pausing and resuming behave
strangely. Progress now reflects what the server has really received.
- Hidden files were invisible on FTP servers. "Show Hidden Files" had no effect
on the remote pane, and folder sync never saw dotfiles such as .htaccess.
They now appear correctly.
- Fixed a crash when pausing an SFTP transfer.
- Importing ~/.ssh/config now follows OpenSSH rules properly: the first value
wins (it used to take the last one, which could import the wrong hostname or
user), and IdentityFile, ProxyJump, Match and Include are all understood.
- The transfer panel now separates failed transfers from completed ones, so an
error can no longer be mistaken for a success.
1.1.0 Jul 22
Upstream 1.0.3 makes folder synchronization faster, smarter, and easier to trust. Here is what's new:
- Faster Sync: Files are now compared by size, so identical files are never re-uploaded. Only what actually changed gets transferred, saving time and bandwidth.
- Full Subfolder Support: Synchronization now walks the entire folder tree, including nested subfolders.
- Cleaner Results: System and hidden folders are excluded by default, removing unnecessary noise from your transfers.
- Tree Preview with Cascading Selection: Review exactly what will be transferred in an interactive tree before you start — selecting a folder automatically selects its contents.
- More Reliable Overwrite Prompts: Fixed overwrite confirmation when selecting multiple items from the menu and when hidden files are involved.
- Automatic Refresh: The file panes now refresh automatically after a transfer completes, so you always see the current state.
- Windows/IIS Server Compatibility: Upstream now reads DOS-style directory listings from Windows and IIS FTP servers, which previously showed up as empty folders. The correct format is now detected automatically.
1.0.3 Jul 3
improved stability
1.0.2 Jul 2
Upstream 1.0.1 focus is on connection stability, advanced security, and user experience refinements. Here is what's new:
- Smart PASV Negotiation: Fixed connection timeouts behind NAT. Upstream now automatically detects unroutable private/loopback IPs returned by firewalls and overrides them using the control connection's host.
- Fixed Data Connection Leaks: Half-open data connections on transfer errors are now properly disposed of, preventing the server from returning "too many connections" errors.
- IPv6 EPSV Support: Added support for Extended Passive Mode (EPSV) on IPv6 connections.
- Interactive Security (TOFU): FTPS certificates and SSH host keys are no longer pinned silently. Upstream now prompts you with a SHA-256 fingerprint on first use and displays clear security warnings if a key changes (MITM warning).
- Security Preference Panel: Easily review, forget, or clear trusted SSH host keys and FTPS certificate fingerprints from the settings.
- Persistent Window Size: Fixed a bug where the main window would reset to its default size. Upstream now reliably remembers its size and screen position across launches.
- In-App Help Center: Browse detailed documentation and guides directly from the Help menu (or using the ⌘? shortcut).
1.0.1 Jun 29
CLOUD STORAGE (FULL)
- Amazon S3, Backblaze B2, Cloudflare R2, Wasabi and MinIO: buckets open as
folders in the same two panes as your servers, with the queue, sync and
auto-upload.
- Large files upload in parts, downloads resume, and renaming a folder happens
on the server.
AUTO-UPLOAD ON SAVE (FULL)
- Turn it on and work in your local folder: every file you save goes up to the
server on its own, through the transfer queue. Temporary editor files and
your .syncignore rules are respected. Nothing is ever deleted on the server.
INFO PANEL
- Option-Command-I opens a panel with the preview and details of the selection:
images, code, permissions, owner, public URL.
- Edit Here: fix a line in a text file without leaving the window. Straight
quotes stay straight.
BATCH RENAME (FULL)
- Find and replace (also with regular expressions), prefix, suffix, numbering,
letter case and extension, with a live preview. Conflicts block the rename
instead of overwriting a file.
FREE FOR EVERYONE
- SSH key authentication.
- Importing sites from FileZilla and ~/.ssh/config, including keys and jump
hosts. A welcome screen on first launch walks you through it.
- Quick Connect now speaks SFTP and FTPS, not only plain FTP.
TRY FULL
- A free 7-day trial of everything in FULL. No charge and nothing renews.
FTPS
- Works with servers that require TLS session reuse on the data connection
(the default of vsftpd and FileZilla Server): before, you could log in but
not list or transfer.
AND MORE
- Speed and time left for every transfer and for the whole queue.
- The number of active transfers on the Dock icon.
- Shortcuts: "Upload Files to Site" and "Open Site", also as Finder Quick
Actions. sftp://, ftps:// and ftp:// links open in Upstream.
- A cleaner main window: the home uses the whole width when you are not
connected, and the toolbar follows the new macOS design.
Thanks to everyone who asked for S3, ProxyJump and strict FTPS on Product Hunt.
more Version 1.5.0 Sep 29
Data Not Collected The developer does not collect any data from this app.
Supported Features
VoiceOver
Dark Interface
Audio Descriptions