The thing that keeps people on an FTP client they have stopped enjoying is rarely the client. It is the forty saved servers they do not want to type again.
That is a solvable problem — FileZilla’s site list is a plain XML file, and it can be imported wholesale.
Where FileZilla keeps its sites
On macOS, the site manager lives at:
~/.config/filezilla/sitemanager.xml
Older versions used ~/.filezilla/sitemanager.xml. Both are hidden directories, so in the Finder press ⇧⌘. to reveal them, or use Go ▸ Go to Folder (⇧⌘G) and paste the path.
You can also produce a clean copy from within FileZilla: File ▸ Export, tick “Export Site Manager entries”, and save the XML wherever you like. This is the better route, because it gives you a file you can hand to another application without touching your config directory.
A word about those saved passwords
Worth knowing before you migrate, because it surprises people: by default, FileZilla stores site passwords in plain text inside sitemanager.xml. Not encrypted — Base64-encoded at most, which is encoding, not protection. Anyone who reads that file, or a backup of it, or a synced copy of your home directory, has every server password in it.
FileZilla added an optional master password that encrypts them, but it is off unless you switched it on.
This matters for the migration in two ways. First, when you export, you are creating a file full of credentials — delete it once you have finished. Second, it is a good moment to change any password that has been sitting in that file for years, particularly for servers reachable from the internet.
The alternative model, which Upstream uses, is to keep credentials in the macOS Keychain: encrypted at rest, protected by your login, and never written into the application’s own configuration.
Importing into Upstream
Upstream (FULL) reads both FileZilla’s XML and your SSH config:
From FileZilla — Import ▸ From FileZilla, then select sitemanager.xml or your exported file. Host, port, protocol, FTPS mode, username, password and remote starting path all come across, and folder structure in the site manager is preserved. Passwords go into the Keychain as they are imported.
From ~/.ssh/config — Import ▸ From SSH config brings in every Host block as a site: hostname, port, user and the IdentityFile path. If a host uses ProxyJump (or the older ProxyCommand ssh -W), the bastion relationship is preserved and linked to the imported jump host — see connecting through an SSH bastion.
One detail specific to macOS: because Upstream is sandboxed it cannot read ~/.ssh on its own, so an imported IdentityFile arrives as a path rather than as key material. At the first connection you are asked to select that key once, and it is then kept in the Keychain. That prompt is the sandbox working as intended, not a missing feature.
After the import
Check the protocols. FileZilla stores plain FTP as the default for older entries. This is a good opportunity to move anything public-facing to SFTP or FTPS — the differences are here.
Prune. There will be servers in that list that no longer exist. Deleting them is faster than wondering later.
Set remote paths. If a site always starts at /var/www/html, save it on the site so every session opens there.
Consider keys instead of passwords for anything over SSH. Setting up SSH keys takes five minutes and retires the password entirely.
Then delete the export. It is a plain-text credential file. Remove it from your Desktop and empty the Trash.
Step by step
- Export from FileZilla — File ▸ Export ▸ Site Manager entries, saving the XML somewhere you will remember.
- Import it — in Upstream, Import ▸ From FileZilla and pick that file. Credentials land in the Keychain.
- Import your SSH config too if you use one, to bring across hosts, ports, identity files and jump-host relationships.
- Authorise each SSH key once at the first connection to a site that uses one.
- Review protocols and prune dead entries, upgrading public servers away from plain FTP.
- Delete the exported XML, which contains your passwords in plain text.
Questions people ask
Where is sitemanager.xml on a Mac?
At ~/.config/filezilla/sitemanager.xml in current versions, or ~/.filezilla/sitemanager.xml in older ones. Both are hidden — press ⇧⌘. in the Finder to show them.
Does FileZilla really store passwords in plain text?
By default, yes. There is an optional master password that encrypts them, but unless you enabled it the credentials sit readable in the XML.
Will my folder structure survive the import?
Yes. Groups in FileZilla’s site manager are preserved.
Can I import from Cyberduck or Transmit as well?
Those use different formats — Cyberduck writes one .duck plist per bookmark, Transmit keeps favourites in its own store. FileZilla’s XML and ~/.ssh/config are the two formats Upstream imports directly.
Do I have to retype my SSH key passphrases?
Once per key. After you authorise the key file, both the key and its passphrase live in the Keychain.