A native macOS SSH, RDP and Telnet client for people who keep a lot of servers in their head — sessions in a tree, jump hosts, SFTP next to the terminal, remote desktops in tabs, your Mac's own shell beside them, and passwords in the macOS Keychain. Built for anyone coming from MobaXterm who wants the same way of working, as a real Mac app.
- Sessions in a tree. Groups and subgroups, colors that the sessions inside take on, an icon per session, pinned favorites at the top, search, drag and drop to reorder — and the keyboard, as in Finder: arrows to move, Return to connect.
- Tabs you can arrange. Each carries its session's icon in its group's color; drag tabs into any order, step through them with ⇧⌘[ and ⇧⌘], and right-click one to reconnect, duplicate or close the rest. When there are more than fit, the strip scrolls with the mouse wheel — and if you like, the tabs open at quit connect again the next time Termstead starts.
- Split the window. Two panes side by side or stacked, or four, from the buttons beside the gear. Each pane has its own tabs; drag a tab onto another pane's strip to move it there. Broadcast input types into every visible pane at once — a yellow line marks each pane that takes it, and any pane can be left out.
- Your Mac's own terminal, in a tab (⌥⌘T, or the terminal button beside
the tab strip's +): your shell, at home, beside the servers — in any pane,
part of broadcast input like the rest, with this Mac's files in the SFTP
tab, following its
cd. - Snippets. Commands you type often, kept in a Snippets tab beside Sessions and SFTP and sent with a double-click or ⌃1–⌃9 to the tab in front — or to every pane with broadcast input. A snippet can stop short of Return, to finish the command by hand.
- Session logs. A tab's output to a plain-text file with the time on each line — no colors or control codes — for a session always, or for any tab when you choose.
- Tabs come back by themselves. A connection dropped by sleep, Wi-Fi or
a VPN reconnects on its own once there is a network again;
exitstays closed. - Jump hosts. Chain as many as you need; a jump host can be a saved session, with its own user, key or password.
- Remote desktops (RDP) in tabs. An RDP session opens as a tab like any other, in any pane, and through its jump hosts if it has them. The desktop fits the tab and follows it as the window is resized, sharp on Retina screens; zoom with ⌘+ and ⌘−. Text and files copy both ways — from Finder into Explorer and back — a Mac folder can be shared as a drive, and Ctrl+Alt+Del and the Windows key are in the Session menu. The server's certificate is checked as a browser would, and one you have not seen before is asked about in the tab.
- Telnet for switches, routers and older gear, in a tab like the rest, with logs, snippets and broadcast input — macOS ships no telnet of its own any more, so Termstead brings one.
- Port forwarding. Local, remote and SOCKS tunnels through every jump host on the way, started from a session's context menu on a connection of their own, with no terminal. Stop or start each one from the status bar.
- Server load at a glance. The status bar shows the CPU, memory, disk and network of the Linux server in front, read over the connection already open.
- Passwords and key passphrases in the Keychain, entered for you when ssh asks — and only for the host they were saved for.
- SFTP beside the terminal. The SFTP tab browses the server over the connection that is already open, so it never asks for a password again, and the sidebar turns to it as soon as you are logged in. It can follow the terminal's current folder; drag files in to upload and out to download; open a remote file in its Mac app and it is uploaded again each time you save. In a local terminal it shows this Mac's files, following the shell's folder the same way.
- Import from
~/.ssh/config— your existing hosts become sessions in one click. - Find in the output (⌘F), with the scrollback size of your choice.
- Keyword highlighting of errors, warnings, IP addresses and URLs in output the server did not color itself — or, for network gear, interface names, up/down and MAC addresses too.
- Eight themes — Graphite, Midnight, Ember, High contrast, Nord, Synthwave, Daylight, Sepia — following macOS light and dark mode if you like, any monospaced font, with or without its ligatures, copy on select, Option as Meta. Prompt icons (powerlevel10k, oh-my-zsh, Starship) show with no Nerd Font to install.
- It is the real OpenSSH. Each tab runs the system
ssh, so your agent,~/.ssh/config,known_hostsandProxyJumpall work exactly as in Terminal.
Termstead needs macOS 14 Sonoma or later, on Apple silicon or Intel.
Homebrew:
brew install --cask pkhorenyan/tap/termsteadOr download the latest Termstead.dmg from
Releases, open it and
drag Termstead to Applications.
Termstead keeps itself up to date: it looks for a new version once a day, and Termstead ▸ Check for Updates… does it on demand. Every update is verified against the project's signing key before it is installed.
- Termstead has no SSH code of its own. Connections, keys, host verification and encryption are all OpenSSH's, as shipped with macOS.
- Passwords and passphrases are kept in your login Keychain. A password is
handed to ssh only for the exact
user@hostit was saved for, and each saved secret is offered once — if the server refuses it, you are asked in the terminal as usual. - The ssh configuration for each connection is written to a private temporary folder, readable only by you, and deleted when the tab closes.
- Remote desktops are drawn by FreeRDP in a process of its own: a crash in it ends the remote desktops, not Termstead or its ssh sessions. A shared Mac folder is the only one a remote desktop sees. A server that offers no TLS, and so cannot prove who it is, is not logged in to. Your clipboard reaches a remote desktop only while you are typing in it.
- Telnet is not encrypted — passwords included — and the session form says so. Use it for gear that speaks nothing else, on a network you trust.
- Session logs are written only when you ask, to a folder you choose
(
~/Documents/Termstead Logsat first), readable only by you. - Sessions and snippets are stored in
~/Library/Application Support/Termstead/(sessions.json,snippets.json). Nothing is sent anywhere: no accounts, no analytics.
| New session / New group | ⌘N / ⇧⌘N |
| Connect to the selected session | ⌘O |
| Session settings | ⌘I |
| Quick connect by address | ⌘K |
| New tab / Close tab | ⌘T / ⌘W |
| New local terminal | ⌥⌘T |
| Send snippet 1–9 | ⌃1 – ⌃9 |
| Previous / next tab | ⇧⌘[ / ⇧⌘] |
| Split vertically / horizontally | ⌘D / ⇧⌘D |
| Previous / next pane | ⌘[ / ⌘] |
| Broadcast input to the visible panes | ⌥⌘I |
| Hide / show the sidebar | ⌃⌘S |
| Find / Next / Previous | ⌘F / ⌘G / ⇧⌘G |
| Text size in the tab — or a remote desktop's zoom: bigger / smaller / default | ⌘+ / ⌘− / ⌘0 |
| Settings | ⌘, |
Double-click a session to connect. A closed tab keeps its output — press Return to reconnect, or choose Reconnect from the tab's menu. Drag a tab to move it; the middle mouse button closes it.
Once you click in the session tree, the keyboard moves through it:
| Move up / down; extend the selection | ↑ / ↓; ⇧↑ / ⇧↓ |
| Open a group, or go into it / close it, or go up | → / ← |
| Connect every selected session; open or close a group | Return |
| Delete the selection | ⌫ |
| Back to the terminal | Esc |
↓ in the search field goes to the first session found, so typing a few letters and Return is enough to connect.
brew install xcodegen cmake ninja
scripts/build-rdp-deps.sh # FreeRDP and OpenSSL for the RDP engine, once
xcodegen generate
xcodebuild -project Termstead.xcodeproj -scheme Termstead -configuration Release \
-derivedDataPath build build
open build/Build/Products/Release/Termstead.appArchitecture, tests and development notes are in CLAUDE.md.
Copyright © 2026 Pavel Khorenyan.
Termstead is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed in the hope that it will be useful, but without any warranty; see the LICENSE for details.
The Termstead name and the app icon are not covered by that license. Forks are welcome, under a name and an icon of their own, so that nobody mistakes them for this app.
It includes SwiftTerm by Miguel de
Icaza (MIT), vendored with small patches,
Sparkle for updates (MIT),
FreeRDP for remote desktops and
OpenSSL under it (both Apache-2.0; FreeRDP is
built with small patches, in scripts/rdp-patches), and the typefaces
JetBrains Mono and
IBM Plex Sans, both under the SIL Open Font
License 1.1, with the icons of
Nerd Fonts' Symbols Nerd Font (MIT, its icons
from projects under MIT, CC BY 4.0, Apache-2.0 and OFL). Their license
texts travel inside the app, in Contents/Resources/Licenses.




