English · 简体中文 · 繁體中文 · 한국어 · 日本語
SSHYard is a native desktop SSH / SFTP client for macOS, Windows and Linux, bringing terminals, file management and AI assistance into one app.
![]() Terminal and AI assistant |
![]() SFTP file manager |
![]() System monitor |
![]() AI assistant settings |
-
Terminal
- Tabs, split panes and terminal search
- True colour, wide characters, input methods and mouse support for tmux, vim and htop
- Shared connections across panes on the same host, with automatic reconnection
-
File management
- SFTP alongside the terminal, with directory following and a built-in editor
- Drag-and-drop support and folder transfers
- Transfer queue with pause, resume and retry
-
AI assistant
- Run commands and edit files through a dedicated assistant for each host
- Connect AI providers, or use ACP agents detected on this computer (Claude Code, Codex, Grok, Gemini CLI and more), several at once, each with the models and thinking levels it offers; their work stays on the remote host
- Choose Ask, Review or Full access mode, with configurable AI review
-
Agent integrations
- Connect local AI agents through the open API, MCP and Skill
- Browse hosts, establish connections and run commands without exposing saved credentials
- One-click Skill setup for Claude Code and Codex; agent access is off by default
-
Hosts and credentials
- Import from SSH config or connect quickly with
user@host:port - Passwords, OpenSSH / PEM / PuTTY keys and SSH agent support
- Local encrypted credential storage, key generation and public-key installation
- Import from SSH config or connect quickly with
-
Backup and restore
- Password-encrypted backups of hosts, credentials, snippets and settings, with restore on another device
- Save locally or to WebDAV, S3-compatible storage and private GitHub Gists
- Manual or scheduled backups, with configurable retention
-
Networking
- Multi-hop jump hosts and HTTP / SOCKS5 proxies
- Local, remote and dynamic port forwarding
-
Everyday use
- Server metrics at a glance
- Light and dark themes, with English, Simplified Chinese, Traditional Chinese, Korean and Japanese
Run SSHYard as your normal desktop user, without root or sudo. Saving and unlocking credentials requires libsecret 0.19 or newer (libsecret-1.so.0), your user's session D-Bus, and an available, unlocked Secret Service provider, such as GNOME Keyring or another compatible provider configured for your desktop. Installing libsecret alone does not provide a running Secret Service. The system service stores SSHYard's master key; credentials remain encrypted locally in secrets.enc.
- Debian / Ubuntu: the
.debdeclareslibsecret-1-0 (>= 0.19)alongside GTK; install through a dependency-resolving package manager, for examplesudo apt install ./sshyard_<version>_amd64.deb, using the actual downloaded filename - Arch Linux: the generated
PKGBUILDdeclareslibsecretandgtk3; MyGo's Debian-to-Arch mapping drops version constraints, so ensure libsecret is at least 0.19 - Archive /
install.sh: installation is per-user under~/.localand does not automatically install libsecret, GTK or a Secret Service provider; arrange these dependencies first, and do not run the script as root
Missing system packages or a tenant policy disabling session D-Bus / Secret Service may require an administrator to resolve. Use your desktop's existing keyring manager to unlock its collection when needed. SSHYard uses native UI and does not require WebKitGTK.
For a read-only connectivity check, run this from a terminal in the same desktop login session as SSHYard, without sudo (requires gdbus):
gdbus call --session --dest org.freedesktop.secrets \
--object-path /org/freedesktop/secrets \
--method org.freedesktop.Secret.Service.ReadAlias defaultA returned collection path means the service is reachable; / means it has no default collection. If a collection path is returned, replace /returned/collection/path below with that exact path to inspect its lock state:
gdbus call --session --dest org.freedesktop.secrets \
--object-path /returned/collection/path \
--method org.freedesktop.DBus.Properties.Get org.freedesktop.Secret.Collection Lockedtrue means locked and false means unlocked. These calls may activate the session service, but do not read passwords, unlock collections or modify/delete keyring entries. They only inspect connectivity and collection state; even an unlocked collection does not guarantee SSHYard can read or save its master key. A D-Bus connection error points to the login session or its access policy; ServiceUnknown usually means no Secret Service provider is available for activation. See the ReadAlias API for its return values.
Built with mygo. Requires Go 1.27.3 (GOTOOLCHAIN can download it). No cgo is needed.
# run
go run .
# run the development app; on macOS prefer an "Apple Development" identity
# stable signing can reduce keychain prompts; self-signing does not guarantee
# access across rebuilds, and macOS may still request authorization
scripts/run-dev-app.sh
# keep data in a separate directory
SSHYARD_DATA_DIR=/tmp/demo go run .
# a local SSH server for testing (macOS / Linux)
go run ./cmd/devsshd -addr 127.0.0.1:2222 -user demo -password demo -root /tmp/remote
# a local HTTP / SOCKS proxy for testing
go run ./cmd/devproxy -addr 127.0.0.1:3128
# tests and checks
go test -race -count=1 ./...
go vet ./...
gofmt -l .
# regenerate the locale catalog after editing locales/*.json
GOFLAGS=-mod=mod go run github.com/egoist/mygo/cmd/mygo generate
# package into dist/
go tool mygo build -platform linux/amd64,linux/arm64,windows/amd64,windows/arm64,darwin/arm64,darwin/amd64 -o distTo try it against devsshd, add a host 127.0.0.1, port 2222, user demo, password demo.
Contributor rules are in AGENTS.md.
SSHYard is licensed under the GNU Affero General Public License v3.0.



