diff --git a/COMPARISON.md b/COMPARISON.md index 091c8514..1f711ddd 100644 --- a/COMPARISON.md +++ b/COMPARISON.md @@ -1,73 +1,94 @@ -# One app for your terminal and your servers - -Sarv Terminal is a fast, GPU-accelerated terminal **and** a full SSH client in one native macOS -app — saved hosts, SSH keys, SFTP, tunnels, and end-to-end-encrypted sync, all built in. No -plugins, no separate SSH manager, no config-file spelunking. - -## Everything you get - -- **Import — switch in minutes.** Bring hosts in from `~/.ssh/config` (including `Include`d files), - iTerm2, CSV, PuTTY, MobaXterm and SecureCRT, and pull your appearance & keybindings from Ghostty, - Alacritty, Kitty, iTerm2 and WezTerm. -- **Saved-host vault.** Every server with its full SSH profile — user, port, identity file, agent - forwarding, proxy jump, host-key policy, startup command — in workspace → project folders with - tags and per-host color themes. -- **SSH key manager.** See every key in `~/.ssh`, generate Ed25519 / ECDSA / RSA-4096, copy the - public key, reveal in Finder, or delete — no `ssh-keygen` incantations. -- **SFTP + SCP file manager.** Dual-pane local↔remote browsing plus direct server-to-server copies, - live progress, an in-app file editor, and an rwx / octal permissions editor. -- **Port-forward manager.** Save and run Local (`-L`), Remote (`-R`) and Dynamic / SOCKS (`-D`) - tunnels over any saved host, with start/stop and live status. -- **Zero-knowledge sync.** Move your whole setup between Macs under encryption only you can open — - AES-256-GCM, master password in the Keychain behind Touch ID, your own GitHub repo or synced folder. -- **AI command assist.** When a command fails, get a one-click explanation and a suggested fix you - can paste straight in — bring your own key, using Claude, OpenAI or a local Ollama model. Your key - is stored encrypted on your Mac and never synced. -- **Docker & Kubernetes attach.** List your running containers and pods and open a shell inside any - of them in a click — no `docker exec` / `kubectl exec` to remember. -- **Snippets & shell history.** A library of your most-used commands; browse recent shell history - and save any command as a snippet in a click. -- **Serial console.** Connect to routers, switches, a Raspberry Pi or a microcontroller over - USB-serial — pick the device and baud rate, opens right in a tab. -- **Terminal workspace.** Tabs and splits, focus mode, input broadcasting, tab colors and renaming, - an all-tabs overview, and reopen-closed-tab. -- **Known-hosts manager & activity logs.** -- **Customization.** Themes and per-host themes, background image with opacity and blur, - font / cursor / window controls, and fully rebindable keybinds. - ---- - -## How it compares - -Other terminals can run `ssh` — but the connection-manager layer that makes servers easy to live -with isn't built in. - -**Legend:** ✅ built-in · 🟡 partial · ⬜ not offered. -🟡 usually means the tool can run `ssh`, but has no proper GUI to manage it — no host vault, key -manager, or tunnel UI. - -| | **Sarv Terminal** | Ghostty | iTerm2 | Warp | Terminal.app | WezTerm | -|---|:---:|:---:|:---:|:---:|:---:|:---:| -| Saved-host vault (groups, per-host identity & proxy-jump) | ✅ | ⬜ | 🟡 | ⬜ | 🟡 | 🟡 | -| SSH key manager (generate / list / copy in-app) | ✅ | ⬜ | ⬜ | ⬜ | ⬜ | ⬜ | -| 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 | ✅ | ⬜ | ⬜ | ⬜ | ⬜ | ⬜ | -| Serial console (USB-serial) | ✅ | ⬜ | ⬜ | ⬜ | ⬜ | ✅ | -| Known-hosts manager | ✅ | ⬜ | ⬜ | ⬜ | ⬜ | ⬜ | -| GPU-accelerated rendering | ✅ | ✅ | ✅ | ✅ | ⬜ | ✅ | -| GUI settings (no config file required) | ✅ | 🟡 | ✅ | ✅ | ✅ | ⬜ | -| Local-first · no account · no telemetry | ✅ | ✅ | ✅ | 🟡 | ✅ | ✅ | -| Open source & free | ✅ | ✅ | ✅ | 🟡 | ⬜ | ✅ | -| License | MIT | MIT | GPL-2.0 | AGPLv3 (client) | Proprietary | MIT | - -> If you manage more than one server, Sarv Terminal is the only app here that puts your terminal, -> saved hosts, SSH keys, tunnels and file transfers in **one place** — fast, local-first, and -> zero-knowledge, with nothing leaving your Mac. That's the whole workflow the others leave you to -> assemble by hand. - -Sarv Terminal is macOS-only today (the Ghostty engine is cross-platform; a Linux UI is the -project's biggest open item). Comparison reflects built-in GUI capabilities as of 2026. +# A native Mac terminal built for server work + +Sarv Terminal combines the fast, GPU-accelerated Ghostty engine with the workflows normally found +in dedicated SSH clients: saved connections, SSH keys, SFTP/SCP, tunnels, encrypted settings sync, +container attach, and command-failure assistance. + +That places Sarv Terminal between two established categories. Terminal emulators optimize the local +command-line experience. Dedicated SSH managers optimize fleets of remote connections. Sarv Terminal +is for Mac users who want both in one open-source app. + +## Where we fit + +| Product | Positioning | Main trade-off | +|---|---|---| +| **Sarv Terminal** | We combine a native macOS terminal with visual SSH operations for people who manage multiple servers. | macOS-only today; saved-host passwords are not yet stored in Keychain. | +| **Ghostty / iTerm2 / WezTerm** | Excellent terminal experiences with remote workflows assembled from `ssh`, `scp`, `tmux`, and other tools. | No full built-in server-operations workspace. | +| **Termius / SecureCRT** | Cross-platform coverage, mature enterprise SSH administration, and mobile access. | Proprietary/commercial products rather than an open-source Mac-native stack. | +| **Warp** | Agentic coding and an editor-like command workflow. | Different focus from a saved-host, SFTP, key, and tunnel manager. | +| **Tabby** | Cross-platform open-source terminal access with SSH, Telnet, and serial support. | Electron-based and less focused on a native macOS server workspace. | + +## Compared with terminal emulators + +**Legend:** ✅ built in · 🟡 partial, optional, or adjacent capability · ⬜ not documented as built in. + +| Capability | **Sarv Terminal** | Ghostty | iTerm2 | Warp | WezTerm | +|---|:---:|:---:|:---:|:---:|:---:| +| GPU-accelerated terminal | ✅ | ✅ | ✅ | ✅ | ✅ | +| Saved-host workspace with groups, identity, and proxy jump | ✅ | ⬜ | 🟡 | ⬜ | 🟡 | +| SSH key-management UI | ✅ | ⬜ | ⬜ | ⬜ | ⬜ | +| SFTP/SCP file-management UI | ✅ | ⬜ | 🟡 | ⬜ | ⬜ | +| GUI for local, remote, and SOCKS tunnels | ✅ | ⬜ | ⬜ | ⬜ | ⬜ | +| Failure explanation + suggested fix with BYOK/local-model option | ✅ | ⬜ | 🟡 | 🟡 | ⬜ | +| One-click Docker/Kubernetes shell attach | ✅ | ⬜ | ⬜ | ⬜ | ⬜ | +| No account required for the core terminal | ✅ | ✅ | ✅ | 🟡 | ✅ | +| Open-source license | MIT | MIT | GPL-2.0 | AGPL-3.0 client | MIT | + +iTerm2 offers an optional generative-AI plugin, so it is marked partial rather than absent. Warp has +broad built-in AI/agent capabilities, but its product focus is agentic development rather than the +BYOK/local failed-command workflow described in this row. + +## Compared with SSH and connection managers + +This is the more important competitive set for Sarv Terminal's server-management features. + +| Capability | **Sarv Terminal** | Termius | SecureCRT | Tabby | +|---|:---:|:---:|:---:|:---:| +| Terminal + saved connections | ✅ | ✅ | ✅ | ✅ | +| Keys/credentials managed through the app | ✅ | ✅ | ✅ | 🟡 | +| GUI port-forwarding workflow | ✅ | ✅ | ✅ | 🟡 | +| Encrypted multi-device settings/host sync | ✅ user-controlled backend | ✅ Termius cloud vault | ⬜ not documented as built in | ⬜ not documented as built in | +| BYOK/local command-failure assistance | ✅ | ⬜ | ⬜ | ⬜ | +| One-click Docker/Kubernetes shell attach | ✅ | ⬜ | ⬜ | ⬜ | +| Desktop platforms | macOS | macOS, Windows, Linux + mobile | macOS, Windows, Linux | macOS, Windows, Linux | +| Product model | Free, open source | Proprietary, subscription tiers | Commercial | Free, open source | + +## The honest positioning + +Sarv Terminal's advantage is not that other products cannot connect to servers. Termius and +SecureCRT are mature connection managers, while Ghostty, iTerm2, Warp, WezTerm, and Tabby are strong +terminal products. + +The differentiator is the combination: **a native macOS terminal built on Ghostty, plus a visual +server-operations workspace, released under MIT and usable without a mandatory account.** We focus +on a Mac-first, open-source and local-first workflow. Cross-platform SSH managers remain the stronger +fit when mixed-device and mobile support are the priority. + +## Security and privacy scope + +Sarv Terminal does not require an account and does not bundle product telemetry. Local data stays on +the Mac unless an optional feature that communicates externally is enabled: + +- encrypted sync writes to the selected private GitHub repository or synced folder; +- AI assistance sends the relevant request to the configured provider, or stays local with + Ollama; +- saved-host passwords currently remain in local `hosts.json`; SSH keys are recommended until the + planned Keychain migration lands. + +## Sources and methodology + +Checked **2026-07-21** against vendor documentation and public repositories. The table covers +built-in, user-visible product capabilities rather than everything achievable with scripts or +third-party extensions. Features, editions, and pricing can change; corrections are welcome. + +- [Sarv Terminal README](README.md) +- [Ghostty features](https://ghostty.org/docs/features) +- [iTerm2 features](https://iterm2.com/features.html) and [AI plugin](https://iterm2.com/ai-plugin.html) +- [Warp repository](https://github.com/warpdotdev/warp) +- [WezTerm repository](https://github.com/wezterm/wezterm) +- [Termius Vault](https://termius.com/vault) +- [SecureCRT features](https://www.vandyke.com/products/securecrt/features.html) +- [Tabby repository](https://github.com/Eugeny/tabby) + +Sarv Terminal is macOS-only today. Its Ghostty-derived terminal engine is cross-platform, but +the connection-manager interface is currently implemented in SwiftUI. diff --git a/MARKETING-LAUNCH-PLAN.md b/MARKETING-LAUNCH-PLAN.md new file mode 100644 index 00000000..02b0ed6b --- /dev/null +++ b/MARKETING-LAUNCH-PLAN.md @@ -0,0 +1,264 @@ +# Sarv Terminal launch plan + +Updated **2026-07-21** for Sarv Terminal **1.9.4**. + +## Positioning decision + +**The open-source Mac terminal for people who manage servers.** + +Sarv Terminal should not compete on a generic "fast terminal" claim. Its wedge is the combination of +the Ghostty engine with a visual server-operations workspace: saved connections, SSH keys, SFTP/SCP, +tunnels, encrypted sync, container attach, and command-failure assistance. + +### Primary audience + +Mac-based developers, DevOps engineers, infrastructure engineers, consultants, and homelab users who +manage two or more remote systems and currently combine a terminal with separate SSH/SFTP tools. + +### Proof points + +1. Native macOS app built on the Ghostty engine. +2. Terminal and server operations in one workspace. +3. MIT licensed, no mandatory account, no bundled product telemetry. +4. Homebrew install plus signed and notarized releases. +5. User-controlled encrypted sync and BYOK/local AI options. + +### Messaging guardrails + +- Say **local-first**, not "nothing ever leaves the Mac." Optional sync and remote AI providers + communicate externally when enabled. +- Do not lead with "zero knowledge" until the exact scope is explained. +- Disclose that saved-host passwords currently live in local `hosts.json`; recommend SSH keys until + the Keychain migration ships. +- Describe Termius and SecureCRT as mature alternatives. The differentiation is the combined + Mac-native, open-source workflow—not a claim that competitors cannot manage servers. +- Use reproducible evidence for performance claims; do not claim "fastest." + +## Phase 0 — Trust and launch readiness + +**Goal:** make every install safe, credible, and easy to evaluate. + +### Work + +- Move saved-host passwords into macOS Keychain. This is the primary security-marketing blocker. +- Test the DMG and Homebrew path on a clean Mac with Gatekeeper enabled. +- Verify signing, notarization, checksums, auto-update, uninstall, and rollback behavior. +- Run a compatibility pass covering zsh, bash, fish, tmux, SSH through a jump host, popular TUIs, + Docker attach, Kubernetes attach, Unicode, and non-US keyboard layouts. +- Keep `README.md`, `COMPARISON.md`, screenshots, release notes, and the shipped feature set aligned. +- Publish a plain-language privacy and threat-model document. +- Add an opt-in first-run feedback link and a public known-issues section. + +### Exit criteria + +- No plaintext saved-host passwords. +- Ten clean-machine installs without a signing, Gatekeeper, or update failure. +- No known critical/high security defect. +- Every comparison row has a source and verification date. +- A new user can install and connect to a host in under five minutes. + +## Phase 1 — Positioning and proof + +**Goal:** show one memorable outcome instead of a long feature inventory. + +### Core demonstration + +Create a 20–30 second, silent captioned demo: + +1. Open the host workspace. +2. Connect through a saved profile or proxy jump. +3. Transfer a file in SFTP. +4. start a tunnel or attach to a container. +5. End on: **"We bring the terminal and server workspace together. Open source on Mac."** + +### Assets + +- One hero screenshot showing terminal + host workspace. +- One short workflow video and one GIF under a practical file-size limit. +- Three feature screenshots: connections, SFTP, and tunnels. +- An honest comparison page covering terminals and SSH managers separately. +- A founder story: why another terminal was necessary and why it is built on Ghostty. +- A technical post describing the architecture and upstream relationship. + +### Customer discovery + +Interview at least ten target users. Ask what they use today, how many systems they manage, the last +time remote work caused friction, and what would stop them from switching. Do not ask whether they +"like" the feature list. + +### Exit criteria + +- At least five target users install without live help. +- At least three use Sarv Terminal again after seven days. +- Users can repeat the positioning in their own words. +- Two attributable testimonials or case studies are approved. + +## Phase 2 — Focused beta and contributor flywheel + +**Goal:** earn evidence before a broad launch. + +### Distribution + +- Find 30–50 Mac-based developers/operators from existing relationships and relevant communities. +- Use GitHub Discussions for support and product feedback so answers stay searchable. +- Label several genuinely small, well-scoped contributor tasks. +- Publish weekly development notes and acknowledge every external contribution. +- Approach maintainers of complementary tools—Starship, tmux, Neovim, yazi, Zellij, Docker and + Kubernetes TUIs—for compatibility testing, not promotional endorsement. + +### Exit criteria + +- 30 activated testers. +- Seven-day return rate of at least 25% among testers who consent to measurement. +- Five resolved usability or compatibility issues from outside feedback. +- First maintainer response within 24 hours during the beta. +- At least two external contributors or documentation improvements. + +## Phase 3 — Public launch sequence + +**Goal:** compound attention across two weeks while the team remains available to respond. + +### Day 0 — GitHub and release + +- Publish a stable release with signed DMG, checksums, release notes, known limitations, and direct + Homebrew instructions. +- Pin a welcome Discussion for feedback and migration questions. +- Update the website, repository social preview, and screenshots at the same time. + +### Day 1 — macOS community + +For `r/macapps`, use the main feed only after satisfying the community's current rules: 10 local +karma, the required promotion template/approval path, relationship disclosure, and no more than one +developer promotion in 30 days. Otherwise use the monthly promotion megathread. + +Current account check (2026-07-21): `u/NetworkDue5038` has no recorded `r/macapps` local karma. +The eligible route is the pinned July 2026 **App Pile** megathread, but its moderator warning says a +first linked comment is likely to be auto-removed until the account has earned 10 local karma without +promotional comments or links. Participate genuinely before submitting; do not manufacture engagement. + +Megathread PCP-format draft (post only after the account is eligible): + +> **[OS] Sarv Terminal: a native Mac terminal for people who manage servers** +> +> **Problem:** We work on Sarv Terminal. We built it for Mac users who want a fast terminal but also +> need to manage saved SSH hosts, move files, and create tunnels without switching between several +> tools. It includes tabs and splits, saved SSH profiles, SSH key management, SFTP and SCP, local, +> remote and SOCKS tunnels, Docker and Kubernetes attach, and optional encrypted settings sync. No +> account is required. +> +> **Comparison:** Ghostty and iTerm2 are excellent terminal emulators, but server management is not +> their main workflow. Termius and SecureCRT offer stronger connection management, but they are +> proprietary products. Sarv Terminal combines a Ghostty-based terminal with built-in server tools +> and is free under the MIT license. It is currently Mac-only. Saved-host passwords have not yet +> moved to Keychain, so we recommend SSH keys. +> +> **Pricing:** Free and open source. Download or install with Homebrew: +> https://github.com/Sarv/SarvTerminal +> +> We would value feedback on SSH compatibility, SFTP workflows, and any blockers to daily use. + +Suggested title: + +> [OS] Sarv Terminal — a native Mac terminal with saved SSH hosts, SFTP and tunnels + +Suggested body: + +> Disclosure: We work on Sarv Terminal. It is a free MIT-licensed macOS terminal built on Ghostty for +> people who manage multiple servers. Alongside tabs and splits, it includes saved SSH profiles, +> SSH-key management, SFTP/SCP, local/remote/SOCKS tunnels, Docker/Kubernetes attach, and optional +> encrypted settings sync. No account is required. +> +> The project is still Mac-only, and saved-host passwords have not yet moved to Keychain, so SSH +> keys are recommended. We would especially value feedback on SSH compatibility, SFTP workflows, +> and any blockers to daily use. +> +> GitHub and downloads: https://github.com/Sarv/SarvTerminal + +Respond to every substantive comment. Do not ask for votes or coordinate artificial engagement. + +### Day 3 — Show HN + +Suggested title: + +> Show HN: Sarv Terminal – an open-source Mac terminal for managing servers + +The founder must write the submission personally. Hacker News currently prohibits generated or +AI-edited comments, requires a product people can try without a signup barrier, and prohibits vote +solicitation. Explain the origin, architecture, Ghostty relationship, trade-offs, and security scope. + +### Days 5–7 — Technical communities + +Create distinct posts for `r/commandline`, `r/opensource`, `r/developersIndia`, and any community +for the implementation language where the engineering story is genuinely relevant. Check each +community's current rules immediately before posting. Do not cross-post identical promotional copy. + +### Days 8–14 — Product Hunt and editorial outreach + +- Launch on Product Hunt only after the first feedback round is resolved. +- Tagline: **A native Mac terminal with server operations built in.** +- Prepare the maker comment, demo, screenshots, and direct product URL in advance. +- Submit to developer-tool newsletters and small creators with a factual three-line pitch, demo, and + clear disclosure. Prioritize editorial fit over audience size. + +## Phase 4 — Compounding growth + +**Goal:** turn releases and community work into repeatable discovery. + +Publish one useful artifact each week: + +- a transparent performance or memory investigation; +- an SSH/SFTP compatibility report; +- a migration guide from iTerm2, Ghostty, Termius, SecureCRT, or Tabby; +- an engineering deep dive into a real problem; +- a contributor story; +- a short workflow video; +- a meaningful release note with before/after evidence. + +Build search pages around user jobs, not keyword stuffing: "open-source SSH manager for Mac," "Mac +terminal with SFTP," "GUI SSH tunnel manager for macOS," and "Ghostty-based SSH client." + +## Measurement + +GitHub stars are useful social proof, not the north-star metric. + +| Funnel stage | Metric | Initial target | +|---|---|---:| +| Discovery | Qualified website/repository visits | 1,000 in first 30 launch days | +| Acquisition | Visit-to-download conversion | 25% | +| Activation | Successful first terminal + first saved connection | 60% of installers | +| Retention | Seven-day return rate | 25% | +| Quality | Install/signing failure rate | under 2% | +| Community | Meaningful external feedback conversations | 25 in 90 days | +| Contribution | External contributors with merged work | 5 in 90 days | +| Responsiveness | First maintainer response during launch | under 24 hours | + +Use transparent, privacy-respecting measurement. If application analytics are added, make the event +schema public, collect the minimum required data, and provide a clear opt-in choice. + +## Manual approval gates + +The following actions require a maintainer or account owner: + +1. Security approval before making credential-safety claims. +2. Moderator approval and local-karma eligibility for an `r/macapps` main-feed post. +3. Founder-written Hacker News submission. +4. Final confirmation immediately before publishing any external post or sending outreach. +5. Account login, CAPTCHA, verification code, payment, or legal/trademark decision. + +## Distribution audit (2026-07-21) + +- Latest release: `v1.9.4`, published 2026-07-17 with a 35 MB DMG, SHA-256 digest, source archives, + and a GitHub release attestation. +- Homebrew cask: `sarv/tap/sarv-terminal` points to `v1.9.4` and its SHA-256 exactly matches the + GitHub release asset. +- The Homebrew cask requires macOS Ventura or newer and declares Sparkle-managed auto-updates. +- Launch-page copy should state the macOS version requirement next to the install call to action. + +## Current platform references + +- [Show HN guidelines](https://news.ycombinator.com/showhn.html) +- [Hacker News guidelines](https://news.ycombinator.com/newsguidelines.html) +- [Product Hunt launch guide](https://www.producthunt.com/launch) +- [GitHub repository best practices](https://docs.github.com/en/repositories/creating-and-managing-repositories/best-practices-for-repositories) +- [Apple notarization guidance](https://developer.apple.com/documentation/security/notarizing-macos-software-before-distribution) +- [Homebrew acceptable casks](https://docs.brew.sh/Acceptable-Casks) diff --git a/README.md b/README.md index 57957ea2..3194578c 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,11 @@

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. +**The open-source Mac terminal for people who manage servers.** +Fast GPU-accelerated terminal, saved connections, SFTP/SCP, SSH keys, tunnels, container attach, +and encrypted settings sync — in one native app. -[Website](https://sarv.com) · [Features](#features) · [How it compares](#how-it-compares) · [Security & Privacy](#security--privacy) · [Install](#install) · [Build](#build-from-source) · [FAQ](FAQ.md) · [Contributing](#contributing) · [Credits](#credits--license) +[Website](https://sarv.com) · [Features](#features) · [Where we fit](#where-sarv-terminal-fits) · [Security & Privacy](#security--privacy) · [Install](#install) · [Build](#build-from-source) · [FAQ](FAQ.md) · [Launch plan](MARKETING-LAUNCH-PLAN.md) · [Contributing](#contributing) · [Credits](#credits--license) ![Platform: macOS](https://img.shields.io/badge/platform-macOS-black) ![License: MIT](https://img.shields.io/badge/license-MIT-blue) @@ -18,49 +18,50 @@ manager, and end-to-end-encrypted settings sync — in one native app. ## 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. +Traditional terminal emulators and dedicated SSH managers solve different parts of remote work. +Sarv Terminal brings them together: a native macOS terminal where saved servers, SSH keys, tunnels, +file transfers, container shells, and terminal sessions live in one workspace. Optional encrypted +sync uses a selected private GitHub repository or folder. 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. +We retain Ghostty's fast GPU rendering, ligatures, true color, and native macOS feel, then add 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. +- **Per-host themes** — each server can open with its own color theme so the active server context + remains visible. - **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 `Include`s), **iTerm2**, CSV, PuTTY, +- **Import** hosts from an existing `~/.ssh/config` (following `Include`s), **iTerm2**, CSV, PuTTY, MobaXterm, or SecureCRT. - **Command palette / quick-connect** to jump to any host or action. ![Vaults — saved hosts, groups and tags](assets/screenshots/hosts.png) -### 🔑 SSH Keychain +### 🔑 SSH Key Manager - 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](assets/screenshots/keychain.png) +![SSH Key Manager — generate and manage keys](assets/screenshots/keychain.png) ### ↔️ 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 +- Each tunnel runs over a saved host; **start/stop** with a live status indicator and inline error reporting (e.g. "port already in use"). ![Port Forwarding — local, remote and SOCKS tunnels](assets/screenshots/port-forwarding.png) ### 🧩 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 +- A library of frequently used commands; run them straight into the focused terminal or copy them. +- **Shell History** — browse 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](assets/screenshots/snippets.png) @@ -81,13 +82,13 @@ the Sarv Terminal layer.** Each section below shows the feature in action. ### 🤖 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. + the suggested fix pastes straight into the focused terminal. +- We support **user-supplied API keys** for **Claude** and **OpenAI**, or a **local model via Ollama** + (fully offline). Provider keys are **stored encrypted on the Mac and never synced**. Requests go + only to the configured provider. ### 🐳 Docker & Kubernetes Attach -- An **Attach** panel lists your running **Docker containers** and **Kubernetes pods**. +- An **Attach** panel lists 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 …`. @@ -97,14 +98,14 @@ the Sarv Terminal layer.** Each section below shows the feature in action. - 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. + hardware-specific, so adapter and chipset details are easy to include when something is 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 + without it passing through the 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. @@ -121,46 +122,40 @@ the Sarv Terminal layer.** Each section below shows the feature in action. ![Appearance — themes, opacity, blur and background image](assets/screenshots/appearance.png) -## How it compares +## Where Sarv Terminal fits -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: +We position Sarv Terminal between modern terminal emulators and dedicated SSH managers: -| | **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 | ✅ | ✅ | ✅ | 🟡 | ✅ | ✅ | +| Product | Best fit | +|---|---| +| **Sarv Terminal** | We combine a native macOS terminal with visual server operations in one local-first, open-source app. | +| **Ghostty / iTerm2 / WezTerm** | Strong terminal experiences with remote workflows assembled from CLI tools. | +| **Termius / SecureCRT** | Cross-platform, mobile, and mature enterprise connection management. | +| **Warp** | Agentic coding and an editor-like command workflow are the main job. | +| **Tabby** | Cross-platform open-source terminal access with SSH, Telnet, and serial support. | -✅ built-in · 🟡 partial (runs `ssh`, but no GUI to manage it) · ⬜ not offered. -**[See the full comparison →](COMPARISON.md)** +**[See the sourced capability comparison and trade-offs →](COMPARISON.md)** ## 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. +Sarv Terminal is **local-first**, requires no account, and does not bundle product telemetry. Hosts, +snippets, tunnel rules, and local settings remain under `~/.config/sarvterminal/`. Optional sync +writes encrypted data to the selected private GitHub repository or folder. AI assistance contacts +only the configured provider, or stays local with Ollama. ### 🔐 End-to-end-encrypted settings sync -Move your entire setup between machines under encryption only *you* can open: +We encrypt synchronized configuration so only the holder of the master password can open it: - **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 + *this-device-only* so it cannot leave the Mac (not even via iCloud Keychain) — **it is never synced**. -- Choose your own backend: a **private GitHub repository** (public repos are rejected) **or** a +- Supported backends are 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 +- Sync covers 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). + decrypting anything. Encryption is **one-way**: losing the master password makes the synced data + unrecoverable, and we surface that clearly in the UI. ![Encrypted Sync — end-to-end-encrypted backup of settings, keybinds and hosts](assets/screenshots/sync.png) @@ -169,7 +164,8 @@ Move your entire setup between machines under encryption only *you* can open: 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. +- The sync master password and AI provider keys live 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](#roadmap--status) — moving host passwords into the Keychain is a tracked @@ -190,7 +186,7 @@ notarized build. Upgrade later with `brew upgrade --cask sarv-terminal` (the app [Releases page](https://github.com/Sarv/SarvTerminal/releases/latest), open it, and drag the app to Applications. -Prefer to build it yourself? See [build from source](#build-from-source). +For a local build, see [build from source](#build-from-source). ## Build from source @@ -216,20 +212,21 @@ For deeper build details and the core engine internals, see [HACKING.md](HACKING - 🐧 **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 + We especially welcome GTK/Qt experience and ideas for a shared cross-platform UI; see [Contributing](#contributing). - ✅ Signed & notarized releases on GitHub + Homebrew (`brew install --cask sarv/tap/sarv-terminal`). -- 🔜 Move saved-host passwords into the Keychain; more sync providers. +- 🔜 Move saved-host passwords into the Keychain; more sync providers. Until then, prefer SSH keys + and treat local `hosts.json` as sensitive. ## Contributing -**Everyone is welcome — let's make this a wonderful, full-fledged open-source terminal together.** 🎉 +**We welcome everyone who wants to help build a wonderful open-source terminal.** 🎉 -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: +We value bug fixes, UI polish, documentation improvements, and larger features. 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. +- **🐧 A Linux UI** — the single biggest opportunity, especially for GTK/Qt contributors. +- **🔒 Security hardening** — moving host passwords into the Keychain, audits, and threat-model review. - **🚀 Releases & packaging** — CI, signed/notarized builds, Homebrew. - **📸 Docs & screenshots** — including the gallery above (see [`assets/screenshots/`](assets/screenshots)). @@ -267,5 +264,4 @@ 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. +We welcome stars and contributions, and we encourage support for upstream Ghostty as well. diff --git a/ROADMAP.md b/ROADMAP.md index 8bfdb23f..454dc262 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -10,7 +10,7 @@ so we never re-plan shipped work. > or secondary sources, not independently verified; 🧭 **synthesis** = our > strategic judgement, not a sourced fact. > -> Last market scan: **2026-07-15** (Warp / Termius / WezTerm covered in depth; +> Last market scan: **2026-07-21** (Warp / Termius / WezTerm covered in depth; > others partial — see [Open items](#open-items-unassessed-competitors)). --- @@ -36,7 +36,8 @@ and SSH/connection managers. macOS Shortcuts / AppleScript automation, notifications, custom app icon, Sparkle auto-update, secure keyboard entry, **broadcast input to all panes**, **focus mode**, **in-app Markdown/file viewer + editor** (Rendered/Raw, in-file - find, syntax highlighting, full-window overlay). + find, syntax highlighting, full-window overlay), **AI command-failure assist** + with Claude/OpenAI BYOK or local Ollama, and **Docker/Kubernetes shell attach**. ### Known constraint - **macOS-only.** Upstream Ghostty is Linux + macOS; Windows is not near-term @@ -46,9 +47,11 @@ and SSH/connection managers. ## 2. Gap analysis — what competitors have that we don't -### Theme A — AI / agentic ⭐ (biggest gap) ✅ -The defining shift of the market. We have **nothing** here. Warp rebuilt its -identity around it: +### Theme A — deeper agentic workflows ⭐ (biggest gap) ✅ +The defining shift of the market. We now have a focused first layer—explain a +failed command and suggest a fix using Claude/OpenAI BYOK or local Ollama—but we +do not yet provide agent orchestration or a structured agent workspace. Warp +rebuilt its identity around those broader capabilities: - Natural-language → command generation (⌘I); "Universal Input" auto-detects command vs. prompt. - **Agent Mode**: task agents that gather context via CLI, MCP, and codebase @@ -102,14 +105,14 @@ Strategic judgement, ordered by leverage. Revisit as the market moves. | # | Initiative | Why it matters | Effort | |---|---|---|---| -| **P1** | **AI command assist + agent integration** | The market's defining gap; pairs with our SSH context (AI that knows *which host*). Start by embedding an agent CLI (e.g. Claude Code) rather than building an LLM UI from scratch. | High (phased) | +| **P1** | **Agent integration beyond command assist** | Build on the shipped failure explain/fix flow with SSH-aware context and first-class agent CLI integration. The opportunity is an agent that knows *which host* and workspace it is operating in—not another generic chat box. | High (phased) | | **P2** | **Live session sharing** | Completes the team story — share the *secret* **and** the *session*; differentiates the vault. | Med-High | | **P3** | **Cross-platform — Linux first, then Windows** | Neutralizes Termius's structural win. Linux is comparatively cheap (Ghostty already has a GTK apprt); Windows is the hard, long-horizon lift (blocked on `libghostty`). | Linux: Low-Med / Windows: High | | **P4** | **tmux / multiplexer integration** | Table-stakes vs WezTerm / iTerm2 for power users; persistent/detachable sessions. | Medium | | ~~**P5**~~ ✅ | **Ansible-native connection sync** — **DONE** | Meets Infra-as-Code teams where they live; unique angle vs Warp (no SSH manager) / Termius (no IaC). Read-only import of Ansible inventory → hosts + groups, plus group-driven theming. Built on **`feat/ansible`** (in DevOps testing). See §5. | Delivered | ### The wedge (recommended focus) 🧭 -Our most **defensible** play is **P1 + P2 fused**: an **AI agent that operates +Our most **defensible** play is **P1 + P2 fused**: an **agent that operates across our saved hosts and team vault, with shareable live sessions.** Neither Warp (no SSH manager / vault) nor Termius (no AI) has this intersection — it's unique to our positioning. @@ -190,7 +193,8 @@ Unranked; promote into the table above when scoped. ## 7. Open items (unassessed competitors) Not covered by the last verified scan — research before relying on these: -- **iTerm2** — tmux control-mode integration, triggers, Python API. +- **iTerm2** — tmux control-mode integration, triggers, and Python API. Its + optional generative-AI plugin was verified on 2026-07-21. - **Wave Terminal** — AI + graphical widgets / blocks. - **SecureCRT / Royal TSX** — enterprise credential brokering, non-SSH connection types (RDP/VNC/serial/telnet), session organization at scale. @@ -215,3 +219,4 @@ Market scan 2026-07-15 (fact-checked, 25 verified claims): - Termius — https://termius.com/vault , https://termius.com/enterprise , https://termius.com/blog/meet-vaults , https://termius.com/pricing - WezTerm — https://github.com/wezterm/wezterm - Ghostty cross-platform — https://github.com/ghostty-org/ghostty/discussions/12290 +- iTerm2 AI plugin — https://iterm2.com/ai-plugin.html