A macOS terminal built for AI agents on remote servers
Your agent's session never gets lost.
Start an AI agent, or any long job, on a remote server. Close the lid, let the battery die, lose the connection: FerryTerm reconnects you to the same session, with everything still running and every line of output still there.
The file panel uses the SSH connection you already typed, so you can review what the agent produced and edit it in your own apps. Built for individuals and teams working with AI agents.
-
Start
Your MacconnectedServer · tmuxagent running -
Lid closed, battery dead or Wi-Fi gone
Your MacofflineServer · tmuxagent still running -
Reopen
Your MacDisconnected — ReconnectServer · tmuxagent still running -
Same session, all output there
Your MacreattachedServer · tmuxnothing lost
Persistent sessions
Close the laptop. The agent keeps working.
Every SSH tab runs in its own tmux session on the server. When your Mac sleeps, the battery dies or the network drops, the session lives on the server, not on your laptop. Open FerryTerm again and the tab reattaches to the same session.
- Quit FerryTerm and relaunch: the restored tab reattaches to its session.
- After a network drop the tab says “Disconnected — Reconnect”; one click reattaches.
- The new-tab menu lists sessions already running on a host, including ones you started outside FerryTerm, so you can attach to them.
- FerryTerm checks for tmux over the connection you already have, and never changes your tmux configuration. A tab can also run without tmux.
Needs tmux on the server. If a host has no tmux, the tab works as a normal SSH tab and does not survive a dropped connection.
Illustration of a FerryTerm window, not a screenshot.
Session resilience
What survives, and what does not
FerryTerm keeps its tmux sessions on their own tmux socket, away from your own tmux setup, and tells you plainly when one is gone.
Survives
- Network drops, a sleeping Mac, quitting FerryTerm.
- On most Linux servers with systemd, a crash of your user systemd manager, which would otherwise take the panes with it. FerryTerm checks the host once and chooses where to start tmux.
Does not survive
- A reboot of the server.
- The server running out of memory and killing your agent or tmux itself.
- Someone ending the session with
tmux kill-session. - Logout, on servers set to
KillUserProcesses=yeswithout lingering. FerryTerm shows a note in the Files panel when a host works this way;loginctl enable-lingerfixes it.
- A lost session is announced, never silently replaced. The tab says the tmux session no longer exists, keeps the old output above that line, and waits for you before starting a new one.
- A bar offers “Start again in this folder” with the command that pane was running. It runs only when you click it.
- Host-side advice: run heavy jobs under a memory cap, for example
systemd-run --user --scope -p MemoryMax=8G your-command, so that an out-of-memory event kills the job and not your sessions.
Everything else you need to supervise agents on remote machines
Every feature below is free. Syncing between your Macs is free during the preview; paid annual plans start later.
A Files panel next to the terminal
Browse what the agent created, in the same window. Toggle the panel with Cmd+B.
- Name, size and modified time, sortable; hidden-files toggle and a path bar.
- Drag files from Finder onto the panel to upload them.
- Right-click a file: edit in text editor, open with default app, download, download as, copy path, rename, delete (with confirmation).
- Select files and folders (Cmd+click or Shift+click for several) and download them from the header button; folders go down recursively through the transfer queue.
- Type while the pointer is over the panel to filter the list by name; Esc clears it, and the keys go back to the terminal when the pointer leaves.
- Every icon button explains itself with a tooltip, with its keyboard shortcut where there is one.
- Download and upload show progress.
Illustration of the right-click menu.
Edit the agent's files in your own apps
Double-click any remote file, Markdown included. It opens in your default macOS app from a local copy, and every time you save, the change goes straight back to the server: written to a temporary name, then renamed into place, with the file's permissions kept.
Conflict protection: if the file changed on the server since you opened it (say, the agent rewrote it meanwhile), FerryTerm overwrites nothing and lets you choose: overwrite, keep the remote version, or save your version as a copy.
Nothing was overwritten. What should FerryTerm do with your saved changes to nginx.conf?
Illustration of the conflict choice.
Keep many agents organised with tab groups
Chrome-style tab groups live in the title bar: one group per project or per server, each with a name and a colour. Collapse a group, rename or recolour it, drag tabs between groups. Local shells and SSH hosts (from your ~/.ssh/config or typed as user@host) can mix freely.
When you relaunch, your groups and tabs come back, and the Files panel always follows the tab you are in.
Illustration.
And the details that make it daily-driver
Panel follows the terminal
cd /var/log in the terminal and the Files panel shows /var/log, in a tmux tab or when the remote shell reports its directory; turn following off with the toggle in the panel header. Folders also have “Open in terminal”.
Transfer queue and folders
Transfers run through one queue with a concurrency limit, pause, cancel and retry. Download or upload whole folders as a single queue entry with total progress.
Accented input
Mouse selection, copy and paste, scroll-back, and input-method and accented characters such as árvíztűrő.
Light, dark and Auto
A theme switcher in the toolbar — System, Light or Dark — changes the terminal and the window chrome in every window at once, and the choice is remembered. System follows macOS appearance live, and so does this site: pick Light, Dark or Auto at the top.
Favourite hosts
Star a host from your ~/.ssh/config or type any destination, on any port: user@host:2222 or ssh://user@host:2222. Favourites are listed first in the + menu and work without an account.
Copy from remote tmux
Copy inside tmux on the server and the text lands on your Mac clipboard. It works one way only: a program on the server cannot read your clipboard.
Native macOS
A native, GPU-rendered app written in Rust, not a browser in a box. It uses your system OpenSSH, so everything your SSH setup does keeps working.
Private beta
FerryTerm is in private testing on real servers and real agent workloads. Download opens at launch.
Sync, optional Free preview
FerryTerm Sync: your hosts and tabs on every Mac
Sign in from Settings; the browser opens for the login. Your favourite hosts, your theme and your tab groups and tabs follow you to your other Macs. Everything is encrypted on your Mac before it leaves it: the server stores only ciphertext, record ids, sizes and times, and cannot read your data. Sync is the only part that will cost money, from annual plans later; everything local stays free, with no account.
- Tabs on other Macs. Open another Mac’s window, a group or all its tabs here. SSH tabs continue the same running tmux session on the server; local tabs start a fresh shell. Nothing opens by itself.
- You choose what to share. Share or hide each window or tab. A hidden one is not published.
- Fast and offline-tolerant. A change starts syncing within about a second; changes made offline are queued and sent when you are back online.
- The account icon in the toolbar is an outline when signed out and filled when signed in, with a small badge for the sync status.
- Your keys. A passphrase you choose and a one-time recovery key. Lose both and nobody, including us, can recover the data.
Illustration.
What syncs
- Favourite hosts
- Theme setting
- Your tab groups and tabs, published per Mac
What never syncs
- SSH passwords
- SSH private keys and
~/.ssh/config - Terminal content and shell history
- The edit cache and transfer history