Skip to content

Sarv/SarvTerminal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

262 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sarv Terminal logo

Sarv Terminal

An open-source, full-fledged terminal and SSH connection manager for macOS. Fast GPU-accelerated terminal, a built-in host vault, SFTP/SCP file manager, SSH key & tunnel manager, and end-to-end-encrypted settings sync — in one native app.

Website · Features · How it compares · Security & Privacy · Install · Build · FAQ · Contributing · Credits

Platform: macOS License: MIT Built on Ghostty


About

Most terminals make you choose: a fast native terminal or a connection manager (like the commercial SSH clients). Sarv Terminal aims to be both — a single, native macOS app where your terminal, your saved servers, your SSH keys, your tunnels, and your file transfers all live together, with your whole setup optionally synced between machines under your own end-to-end encryption.

It is built for developers and operators who live in the terminal and manage more than one server.

Features

Everything Ghostty gives you — fast GPU rendering, ligatures, true color, native macOS feel — plus the Sarv Terminal layer. Each section below shows the feature in action.

🗄️ Connection Manager (Vaults)

  • Saved hosts with a full SSH profile: user, port, identity file, agent forwarding, compression, keep-alives, proxy jump, host-key policy, and a startup command.
  • Groups & tags — organize servers into a workspace → project folder tree.
  • Per-host themes — each server can open with its own color theme so you always know where you are.
  • Guided connect popup with auto-reconnect on network drops / wake-from-sleep, and clean inline error handling.
  • Import hosts from your existing ~/.ssh/config (following Includes), iTerm2, CSV, PuTTY, MobaXterm, or SecureCRT.
  • Command palette / quick-connect to jump to any host or action.

Vaults — saved hosts, groups and tags

🔑 SSH Keychain

  • See every key in ~/.ssh with its type, size, fingerprint, and comment.
  • Generate new keys (Ed25519 / ECDSA / RSA-4096) with an optional passphrase and comment.
  • Copy the public key in one click (to paste into a server's authorized_keys or GitHub), copy the path, reveal in Finder, or delete safely.

SSH Keychain — generate and manage keys

↔️ Port Forwarding

  • Save Local (-L), Remote (-R), and Dynamic / SOCKS (-D) tunnels.
  • Each tunnel runs over one of your saved hosts; start/stop with a live status indicator and inline error reporting (e.g. "port already in use").

Port Forwarding — local, remote and SOCKS tunnels

🧩 Snippets

  • A library of your most-used commands; run them straight into the focused terminal or copy them.
  • Shell History — browse your recent shell commands (zsh / bash / fish) in a side panel and save any of them as a snippet in one click.

Snippets — one-click command library

✅ Known Hosts & 🪵 Activity Logs

  • Browse and manage ~/.ssh/known_hosts.
  • A running activity log of connections and session events.

Known Hosts — browse and manage known_hosts

Activity Logs — connection and session events

🖥️ Terminal Workspace

  • Embedded tabs and splits in a single window, with focus mode, input broadcasting across panes, tab colors & renaming, an all-tabs overview, and reopen-closed-tab.

Terminal — tabs, split panes and background image

🤖 AI Command Assist

  • When a command fails, a one-click banner offers to explain the failure and suggest a fix — the suggested fix pastes straight into your terminal.
  • Bring your own key, your choice of provider: Claude, OpenAI, or a local model via Ollama (fully offline). Your key is stored encrypted on your Mac and never synced — nothing is sent anywhere except the provider you choose.

🐳 Docker & Kubernetes Attach

  • An Attach panel lists your running Docker containers and Kubernetes pods.
  • Click to open an interactive shell inside a container/pod — in a new tab or the current one — without hand-typing docker exec -it … / kubectl exec -it ….

🔌 Serial Console

  • Connect to a device over a USB-serial adapter (console cables for routers/switches, Raspberry Pi, microcontrollers, etc.) right from the Hosts screen or the command palette.
  • Pick a detected /dev/cu.* device and a baud rate; opens a session in a terminal tab (8-N-1, via the built-in screen).
  • A built-in "report an issue" helper opens a pre-filled GitHub issue — serial behavior is hardware-specific, so this makes it easy to tell us your adapter/chipset when something's off.

📁 SFTP / SCP Dual-Pane File Manager

  • Transfers run over both SFTP and SCP — SFTP for local ⇄ remote browsing/transfer, and SCP for direct server-to-server (server ⇄ server) transfers.
  • Browse local ⇄ remote side by side and transfer between them.
  • Direct server-to-server transfers — copy a file from one server straight to another (via SCP) without it passing through your Mac, with an automatic relay-through-this-Mac fallback when the two servers can't reach each other directly.
  • Live transfer progress (file name, size, speed, %, bytes) with a Cancel button, and a clear Server → Server vs Via this Mac indicator.
  • In-app file viewer & editor for remote and config files.
  • Two-way permissions editor — set permissions with rwx checkboxes or an octal field, kept in sync live.

SFTP / SCP — dual-pane file manager

🎨 Customization

  • Appearance: themes, background image with adjustable opacity & blur.
  • Font, cursor, window, tabs, and shell-integration settings.
  • Fully rebindable app keybinds that never clobber Ghostty's defaults.

Appearance — themes, opacity, blur and background image

How it compares

Most terminals are either a fast terminal or a connection manager. Sarv Terminal is both — built on the Ghostty engine, with a local-first SSH client layered on top. Other terminals can run ssh, but the connection-manager layer that makes servers easy to live with isn't built in:

Sarv Terminal Ghostty iTerm2 Warp Terminal.app WezTerm
Saved-host vault (groups, per-host SSH profile) 🟡 🟡 🟡
SSH key manager
SFTP/SCP dual-pane file manager 🟡
Port-forward / tunnel manager (GUI)
Import hosts & settings from other apps 🟡 🟡
End-to-end-encrypted settings sync 🟡 🟡
AI explain/fix for failed commands (bring-your-own-key, local option) 🟡
One-click Docker / Kubernetes container attach
GPU-accelerated rendering
Local-first · no account · no telemetry 🟡

✅ built-in · 🟡 partial (runs ssh, but no GUI to manage it) · ⬜ not offered. See the full comparison →

Security & Privacy

Sarv Terminal is local-first. Your hosts, keys, snippets, and tunnel rules are stored on your machine under ~/.config/sarvterminal/; nothing is sent anywhere unless you explicitly enable sync.

🔐 End-to-end-encrypted settings sync

Move your entire setup between machines under encryption only you can open:

  • AES-256-GCM encryption with a key derived via PBKDF2-HMAC-SHA256 from a master password.
  • The master password is stored only in the macOS Keychain, unlocked with Touch ID, marked this-device-only so it can never leave your Mac (not even via iCloud Keychain) — it is never synced.
  • Choose your own backend: a private GitHub repository (public repos are rejected) or a local / cloud folder (iCloud Drive, Dropbox, Google Drive — any synced directory).
  • Syncs your terminal config, app settings, keybinds, and saved hosts. Blank/default values are never synced and never overwrite a populated value on pull, so sync can't silently wipe data.
  • A small plaintext manifest carries only version + timestamp so status can be shown without decrypting anything. Encryption is one-way: if you forget the master password, the synced data is unrecoverable (this is surfaced clearly in the UI).

Encrypted Sync — end-to-end-encrypted backup of settings, keybinds and hosts

🛡️ Credential handling

  • SSH passwords are fed to ssh/scp out-of-band via SSH_ASKPASS — never typed on the TTY and never echoed into the terminal or shell history.
  • Pre-flight host-key verification (out-of-band ssh-keyscan) so trust prompts are explicit and can't be hijacked by the password helper.
  • Sensitive material lives in the macOS Keychain with this-device-only accessibility.

Note: saved-host passwords are currently stored in the local hosts.json. Prefer SSH keys, and see the roadmap — moving host passwords into the Keychain is a tracked follow-up where help is welcome.

Install

Homebrew (recommended):

brew install --cask sarv/tap/sarv-terminal

This taps Sarv/homebrew-tap and installs the latest signed, notarized build. Upgrade later with brew upgrade --cask sarv-terminal (the app also self-updates).

Direct download: grab the latest SarvTerminal-<version>.dmg from the Releases page, open it, and drag the app to Applications.

Prefer to build it yourself? See build from source.

Build from source

Requirements: macOS, Zig (matching the version in build.zig / HACKING.md), and Xcode (for the macOS app bundle).

git clone https://github.com/Sarv/SarvTerminal.git
cd SarvTerminal

# Build the macOS app bundle
zig build

# The app is produced at:
open zig-out/SarvTerminal.app

For deeper build details and the core engine internals, see HACKING.md.

Roadmap & Status

  • macOS app — actively developed; all features above work today.
  • 🐧 Linux UI — the big open item. The terminal engine (from Ghostty) is cross-platform, but the Sarv Terminal experience (Vaults, SFTP, Keychain, Port Forwarding, Sync) is currently built in SwiftUI for macOS only. A Linux UI is not yet built, and this is where we'd love help most. If you know GTK/Qt (or have ideas for a shared cross-platform UI), please jump in — see Contributing.
  • ✅ Signed & notarized releases on GitHub + Homebrew (brew install --cask sarv/tap/sarv-terminal).
  • 🔜 Move saved-host passwords into the Keychain; more sync providers.

Contributing

Everyone is welcome — let's make this a wonderful, full-fledged open-source terminal together. 🎉

Whether you're fixing a bug, polishing the UI, improving docs, or taking on a big feature, your help matters. A few especially valuable areas:

  • 🐧 A Linux UI — the single biggest opportunity. If you're a GTK/Qt developer, we'd love your help.
  • 🔒 Security hardening — moving host passwords into the Keychain, audits, threat-model review.
  • 🚀 Releases & packaging — CI, signed/notarized builds, Homebrew.
  • 📸 Docs & screenshots — including the gallery above (see assets/screenshots/).

How to get started:

  1. Open an issue or discussion describing the bug or idea before large changes, so we can align.
  2. Fork, branch, and send a focused pull request. Keep commits small and logically grouped, using Conventional Commit messages (feat:, fix:, docs:…).
  3. Build locally with zig build and make sure the app launches.
  4. See HACKING.md for engine/build internals and CONTRIBUTING.md for general guidelines.

Be kind and constructive — we want this to be a friendly community.

Built on Ghostty 👻

Sarv Terminal is a fork of Ghostty by Mitchell Hashimoto and the Ghostty contributors. The blazing-fast, GPU-accelerated terminal engine at the heart of this app is entirely their work, and we are deeply grateful for it. Sarv Terminal layers a connection-manager workflow (hosts, SFTP, keys, tunnels, encrypted sync) on top of that engine. Huge thanks to the Ghostty team — please consider supporting the upstream project. See Credits & License.

Credits & License

Sarv Terminal stands on the shoulders of Ghostty. The core terminal engine, rendering, and libghostty are the work of Mitchell Hashimoto and the Ghostty contributors, and Sarv Terminal would not exist without them. 🙏

This project — both the inherited Ghostty code and the Sarv Terminal additions — is released under the MIT License.

Ghostty:       Copyright (c) Mitchell Hashimoto, Ghostty contributors
Sarv Terminal: Copyright (c) Sarv Terminal contributors

If you find Sarv Terminal useful, please ⭐ the repo, contribute, and consider supporting upstream Ghostty as well.

About

Fast, open-source macOS terminal + SSH connection manager — saved-host vault, SFTP/SCP, SSH keys, tunnels, Docker/K8s attach, AI command assist, and zero-knowledge settings sync.

Topics

Resources

License

Contributing

Stars

14 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors