cd /news/developer-tools/show-hn-ssh-ache-open-source-desktop… · home topics developer-tools article
[ARTICLE · art-115345] src=github.com ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Show HN: SSH Ache – open-source desktop SSH client with SFTP, tunnels and MCP

SSH Ache, an open-source desktop SSH client built with Tauri 2 (Rust) for macOS, Windows, and Linux, has been released with features including a real terminal, SFTP browser, port forwarding, SOCKS5 proxy, jump hosts, and an optional MCP-based AI agent bridge that is off by default and requires per-command approval. The client keeps all data local, with no account required, and offers encrypted backups (PBKDF2 → AES-256-GCM) and host-key verification to prevent man-in-the-middle attacks.

read4 min views1 publishedAug 29, 2026
Show HN: SSH Ache – open-source desktop SSH client with SFTP, tunnels and MCP
Image: Michielbdejong (auto-discovered)

A desktop SSH client with a clean terminal UI — connections, SFTP, port forwarding, and an approval-gated AI agent bridge, with your data kept on your machine and nothing uploaded anywhere.

Releases · AI agent (MCP) · Report a bug

Community edition.A fully local, open-source SSH client — everything runs on your machine, nothing is uploaded, no account required.SSH Ache Teams, an optional way to share connections with your team end-to-end encrypted, is a separate product.

  • 💻 Real terminal— full SSH sessions (russh + xterm.js), tabbed, with splittable panes, plus local shell tabs. - 🗂️ Host vault— saved hosts organised in folders with colours and favourites; secrets stored outside the config in a0600

file (seeSecurity); copy a ready-to-runssh

command for any host. - 🔑 Key Vault— save named SSH private keys once and reuse them across connections. - 🔐 Host-key verification— first-connect fingerprint confirmation,known_hosts

tracking, and a hard refusal with a warning if a host key ever changes (MITM protection). - 📁 SFTP browser— dual-pane local/remote navigation with drag-and-drop transfer of multiple files and whole folders, a replace/skip conflict prompt, and remote create-folder / rename / delete. - 🔀 Port forwarding & SOCKS— local (-L

), remote (-R

), and a dynamic SOCKS5 proxy (-D

), all over the SSH connection. Keepalive keeps idle tunnels alive. - 🛫 Jump hosts (ProxyJump)— reach a host through a saved bastion; the jump host's key is verified too. - 📥 Import— pull existing hosts (and their ProxyJump links) straight into the vault.~/.ssh/config

  • 🔄 Reconnect on drop— when a session times out or the network goes, the pane stays where it is and a** Connection lost**prompt offersReconnect(same host, fresh shell, tab and scrollback intact) orClose tab. - 📡 Broadcast input— type once, send to every split pane in a tab (cluster-ssh). - 🔎 Find & on-connect commands⌘F

searches the terminal scrollback; each host can run a saved command (e.g.tmux attach

) the moment the shell opens. - 🎨 Themes & settings— terminal themes with live font size, cursor, and scrollback controls. - 💾 Encrypted backup— export and import your hosts and secrets as a password-encrypted file (PBKDF2 → AES-256-GCM). - ⏳ Idle screen lock— optional passphrase lock on the window after a period of inactivity (sessions and forwards keep running behind it). - 🤖 AI agent access (MCP)— an optional, off-by-default MCP server bound to localhost behind a bearer token, with per-host opt-in and per-command in-app approval — plus an opt-in per-host Auto-allow that skips the prompt. Seedocs/MCP.md. - 🖥️ Cross-platform— built with Tauri 2 (Rust) for macOS, Windows, and Linux.

brew install --cask SSH-Ache/sshache/sshache

Grab the latest platform build — .dmg

(macOS), .msi

(Windows), or .AppImage

/ .deb

(Linux) — from the Releases page.

macOS builds are not signed or notarised yet.The first launch is blocked as "unidentified developer" — right-click the app →Opento run it anyway. If you would rather not click through that warning for an app that handles SSH credentials (reasonable), build from source instead.

npm install
npm run tauri build

Building from source requires Rust and the Tauri toolchain. See the Tauri prerequisites for platform-specific setup.

Host-key verification— fingerprints are confirmed on first connect and tracked inknown_hosts

; if a host key ever changes, the connection is refused with a warning to guard against man-in-the-middle attacks. There is no "connect anyway" button.Jump hosts are verified too— a bastion's key is checked before any credential is sent to it.** Encrypted backups**— exported hosts and secrets are sealed with PBKDF2-SHA256 (600k iterations) and AES-256-GCM. Exporting a single connection or a workspacewithouta password leaves the secrets out of the file entirely.Approval-gated AI access— the MCP server is off by default, bound to127.0.0.1

behind a random bearer token, and default-deny per host. Every command needs explicit in-app approval unless you turn onAuto-allow for a specific host, which is off by default and skips the prompt for that host only. Secrets are never exposed to the agent. Details indocs/MCP.md.No cloud— nothing is uploaded and no account is required. The only outbound request the app makes is the GitHub release check for updates.

Passwords, key passphrases and pasted private keys are written to ~/.ssh-ache/secrets.json

, a file created with mode 0600

(owner read/write only) — the same access posture as ~/.ssh/id_rsa

. They are not encrypted at rest. They are mirrored to the OS keychain where that works, and the keychain is read as a fallback, but the file is the primary store: keychain access is tied to an app's code signature and is unreliable on the unsigned builds shipped today.

Practically: anything running as your user can read those secrets, exactly as it can read your ~/.ssh

private keys. Full-disk encryption (FileVault / BitLocker / LUKS) is what protects them at rest. Encrypting this file under the screen-lock passphrase is planned; the idle lock today locks the window, not the file.

Found something? SECURITY.md has the disclosure address.

Tauri 2 (Rust backend) · React + xterm.js (frontend) · russh / russh-sftp · portable-pty · keyring (OS keychain mirror).

Licensed under the Apache License 2.0 — free to use, modify, and distribute, including commercially. See NOTICE for attribution.

If SSH Ache saves you time, you can buy me a coffee ☕.

Noor Ajmir Tanvir

── more in #developer-tools 4 stories · sorted by recency
── more on @ssh ache 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/show-hn-ssh-ache-ope…] indexed:0 read:4min 2026-08-29 ·