Skip to content
your-moonPublic

About

A fast, low-memory SSH terminal built with Rust and GPUI

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

54 stars

Watchers

1 watching

Forks

tern icon: a white bird in flight on near-black

tern

A native SSH client for macOS, written in Rust on GPUI.
Saved hosts, SFTP, splits and snippets, with passwords from your own password manager.
Website: https://tern.carrot-soft.tech

⌘K finds web-01, tern connects, runs docker ps, then ⌘\ fills the sudo password

brew install --cask your-moon/tern/tern

Or download the DMG from Releases. It is signed and notarised, so it opens without a warning.

Why tern

tern does what Termius and Tabby do for a list of servers (saved hosts, ⌘K to any of them, SFTP, splits, snippets and port forwards), but as one small native process. One connected tab takes 76 MB where Tabby takes 580 MB (how I measured it).

Passwords come from your SSH key, from a password-manager command such as gopass show -o work/ssh/web-01, or from tern's age-encrypted vault. At a sudo prompt, ⌘\ types the password. It never types one on its own.

Hosts, snippets and settings sync to a private Git repository you own, encrypted on your Mac first. No account, no subscription.

A closer look

sudo docker ps with the sudo password filled by ⌘\
⌘\ fills sudo: the password comes from your password manager, typed only when you ask and only at a password prompt.
The snippets picker filtering docker commands
Snippets (⇧⌘S): saved commands. ↵ marks the ones that run when picked; the rest are typed for you to finish.
Two panes side by side with find in scrollback
Splits and find: ⌘D and ⌘⇧D split a tab; ⌘F searches the scrollback.
The SFTP side panel listing a remote home folder
Files (⇧⌘O): browse the remote side over SFTP; download, or drop files to upload.
Settings, Appearance, with the wallpaper gallery
Wallpapers and fonts: seven public-domain artworks built in, or any image; light, dark or follow macOS; any monospace font.
tern in light appearance over Van Gogh's Wheat Field
Light and dark: the window takes its colours from the wallpaper, and body text stays at least 4.5:1 against it.

Also in the box

  • Connections: groups and tags, a one-time import from ~/.ssh/config, ProxyJump chains, local, remote and SOCKS forwards, agent forwarding, and two-factor logins.
  • Staying connected: automatic reconnect after a network drop, but never after you type exit. A changed host key stops the connection and shows the exact ssh-keygen -R line to fix one you trust.
  • Terminal: tabs that reopen on launch, broadcast input to chosen tabs, ⌘-click links (including OSC 8), session logging, and a status line with latency.
  • Vault: passwords and SSH keys in an age-encrypted file that unlocks with a PIN or the Keychain and locks when you're idle. A password command that arrives through sync must be approved once on each Mac.
  • Sync: runs on its own, merges per host when both Macs changed, and only asks about a real conflict.

Every shortcut can be rebound in Settings. The full list, with the Windows and Linux keys, is in docs/keyboard.md.

Security

  • Host keys are checked against ~/.ssh/known_hosts. A changed key refuses the connection.
  • Secrets live in the vault (age, scrypt) or in your password manager. They are never written to logs, and never typed into the terminal unless you press ⌘\.
  • Sync data is encrypted before it leaves your Mac. The repository sees .age files and a plain tern-meta.json (hash and time, nothing else).
  • Losing a Mac doesn't lose your setup: see docs/recovery.md. Report vulnerabilities privately, as described in SECURITY.md.

Other platforms and building

Windows and Linux builds are on the Releases page as a preview: they pass CI but haven't been run on a real desktop yet, so reports are welcome. To build tern yourself on any platform, see docs/building.md. To contribute, start with CONTRIBUTING.md.

Feedback

tern is young (0.1.3), and I use it every day. If it's missing the one thing that keeps you on Termius, or something breaks, open an issue. I read all of them. Small fixes are very welcome too: the issues labelled good first issue are a good place to start.

Credits

tern copies and adapts code from well-maintained projects rather than reinventing it, and each copied file names its origin (NOTICE.md): zeron's UI (MIT), russh (Apache-2.0), alacritty_terminal (Apache-2.0) and Zed's GPUI. Icons are Solar by 480 Design (CC BY 4.0), fonts are Geist (OFL), terminal themes come from iTerm2-Color-Schemes, and the wallpapers are from The Met Open Access (CC0).

License

GPL-3.0.

About

A fast, low-memory SSH terminal built with Rust and GPUI

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

54 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages