shell-rs README

The project's README from github.com/since2006/shell-rs. As one markdown file: README.md.

ShellRS

ShellRS

A high-performance, native, cross-platform SSH client written in Rust, with a GPU-rendered interface: Xshell-style host management, WinSCP-style SFTP and port forwarding, all in one window.

Release License: GPL-3.0 Platform: macOS | Windows | Linux Rust 1.98 LINUX DO

English | 简体中文

ShellRS main window: a grouped host tree on the left, htop running in a remote terminal on the right, connection latency in the tab bar

About

ShellRS brings Xshell-style host management and tabbed terminals, a WinSCP-style dual-pane SFTP browser and SSH port forwarding together in one cross-platform app, which bastion hosts such as JumpServer can launch the way they launch Xshell and WinSCP. It is written in Rust, and its UI is built on GPUI, the GPU-accelerated UI framework of the Zed editor (through gpui-kit). There is no Electron and no JVM.

Hosts, groups, credentials and forwarding rules live in a local SQLite database. Passwords and key passphrases go only into the system keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service); the database never holds a secret. ShellRS also ships a shellrs command that lets AI agents such as Claude Code or Codex run commands and transfer files on your saved hosts without ever seeing a password.

Features

Hosts

Terminal

Right sidebar tools

SFTP

Opening from a bastion host

Port forwarding

Credentials

A CLI for AI agents

Security and updates

Screenshots

A split view: a remote terminal on top and SFTP for the same host below
Dock splits: a remote terminal and SFTP stacked in one window

Five right sidebar tools side by side: Monitor, Processes, Services, Docker and Network
Right sidebar tools: Monitor, Processes, Services, Docker and Network

Dual-pane SFTP: three local items selected on the left, remote /etc on the right, and a transfer queue with one batch uploading and one waiting
WinSCP-style SFTP: highlight selection and a transfer queue with progress, speed and time left

Edit port forward dialog with the diagram and explanation of a local forward, and two running rules in the forward list
Port forwarding: the diagram shows where each connection goes

Download

Download from shellrs.com/download, which offers the package for your system, or from GitHub Releases. Betas are marked Pre-release there; to get new features early, switch the update channel to Beta in Settings › About.

System Package Notes
macOS 11+ (Apple Silicon) ShellRS-<version>-macos-aarch64.dmg Signed and notarized. Open the DMG and drag ShellRS into Applications
macOS 11+ (Intel) ShellRS-<version>-macos-x86_64.dmg Signed and notarized. Open the DMG and drag ShellRS into Applications
Windows x64 ShellRS-<version>-windows-x86_64-setup.exe Installs per user, no administrator rights needed. The installer is not signed yet; if SmartScreen stops it, choose "More info › Run anyway"
Linux x64 ShellRS-<version>-linux-x86_64.AppImage chmod +x and run. Needs glibc 2.35 or newer (Ubuntu 22.04, Debian 12 and later)

Every package comes with a minisign signature (.minisig), and each release has a SHA256SUMS file.

Once installed, ShellRS keeps itself up to date: it checks, downloads and verifies new versions in the background, then shows an icon in the top-right corner of the title bar; click it and choose "Restart to update", or just quit and the update is installed on the way out. Automatic updates are unavailable when ShellRS runs from inside the DMG or outside the Applications folder, or on Linux when it isn't run as the AppImage.

Getting started

  1. Click "New host…" in the title bar (⌘N, or Ctrl+N on Windows and Linux) and fill in the address, port and login. Passwords go into the system keychain.
  2. Double-click a host to open a terminal. On the first connection you're asked to confirm the host key.
  3. Right-click a host and choose "Open SFTP", or click "SFTP" at the right of the terminal's tab bar. Drag files between the two panes to transfer them.
  4. The three icons after "ShellRS" in the title bar switch the sidebar between hosts, port forwards and credentials.
  5. ⌘T (Ctrl+T) opens a local terminal. Drag a tab to the top, bottom, left or right edge of the tab area to split it.

For AI agents

In Settings › External CLI, turn on Enable external CLI, then install the shellrs command and the Agent Skills. Your agent can then use the hosts you have saved:

shellrs hosts list -q web                          # list hosts and their IDs
shellrs exec <ID> "uptime && df -h"                # run a command; the exit code is the remote one
shellrs upload <ID> ./dist/app.tar.gz /opt/app/    # upload
shellrs download <ID> /var/log/syslog ./logs/      # download
shellrs sync <ID> ./dist /opt/app --delete         # sync a folder, skipping unchanged files

The command hands each request to the running ShellRS, which logs in with the saved settings and keychain. An unknown host or a missing password fails right away with a stable error code instead of a prompt that would hang the agent. See the user manual for details.

Building from source

Install rustup. The repository's rust-toolchain.toml pins Rust 1.98.1, which rustup installs on the first build.

git clone https://github.com/since2006/shell-rs.git
cd shell-rs
cargo run

The first build compiles the whole GPUI stack and takes a while. See development notes (in Chinese) for the Linux system packages and how to run the tests.

Documentation

Apart from the user manual, the documentation is in Chinese for now:

Roadmap

Not implemented yet:

Contributing

Issues and pull requests are welcome on GitHub. Architecture notes and code conventions are in CLAUDE.md (in Chinese). Before sending a change, make sure these pass:

cargo fmt --check
cargo clippy --all-targets -- -D warnings
cargo test

Acknowledgements

License

ShellRS is licensed under the GNU General Public License v3.0. You may use, modify and redistribute it, commercially or not, but any modified version you distribute must come with its complete source code under the GPL-3.0 as well.

shell-rs (since2006/shell-rs)

Searching Database…

Что это?ShellRS — нативный кроссплатформенный SSH-клиент, объединяющий в одном окне управление хостами в духе Xshell, терминалы с вкладками, двухпанельный SFTP-браузер в духе WinSCP и проброс портов SSH.
Он построен на Electron, как большинство кроссплатформенных десктопных приложений?Нет. Он написан на Rust с использованием GPUI — GPU-ускоренного UI-фреймворка из редактора Zed — вместо Electron или JVM.
Как его запустить?Скачайте пакет для своей ОС с shellrs.com/download или из GitHub Releases (DMG для macOS, EXE-установщик для Windows, AppImage для Linux), затем нажмите «New host», чтобы добавить сервер, и дважды щёлкните по нему для подключения.
Какие шероховатости стоит ожидать прямо сейчас?Установщик Windows пока не подписан цифровой подписью, поэтому SmartScreen может потребовать «More info > Run anyway». Инструменты в боковой панели — монитор системы, процессы, службы и Docker — работают только с Linux-хостами, а синхронизация и поиск по каталогам в SFTP всё ещё в планах.
Нужен ли Apple Silicon, или он работает и на Intel Mac, и на Linux?Обе архитектуры Mac покрыты отдельными подписанными DMG, прошедшими нотаризацию, плюс есть установщик Windows x64 и AppImage для Linux x64.
Куда на самом деле попадают мои сохранённые пароли и данные подключений?Пароли и парольные фразы ключей хранятся только в системном хранилище ОС (macOS Keychain, Windows Credential Manager, Linux Secret Service) и никогда в локальной базе SQLite. Анонимная статистика использования (версия, ОС, архитектура CPU, используемые функции) уходит в Aptabase, и её можно отключить.
Что означает лицензия GPL-3.0, если я изменю ShellRS?Вы можете свободно использовать и распространять ShellRS, в том числе в коммерческих целях, но любая изменённая вами версия при распространении должна поставляться с полным исходным кодом тоже под GPL-3.0.
Что CLI shellrs позволяет делать ИИ-агентам вроде Claude Code?Он открывает команды hosts, credentials, exec, upload, download и sync; вход выполняет запущенное приложение ShellRS от лица агента, так что сама команда никогда не видит пароль или приватный ключ.
SFTP-передачи переживают разрыв соединения?Да. Данные сначала пишутся в .filepart, при разрывах повтор выполняется через 1, 3 и 10 секунд, а после перезапуска ShellRS предлагает продолжить ту же передачу.
Как здесь устроен проброс портов?Поддерживаются локальный (-L), удалённый (-R) и динамический SOCKS (-D) пробросы, каждый показан живой диаграммой и имеет собственное SSH-соединение, которое при разрыве автоматически переподключается до трёх раз.
Можно ли запускать ShellRS с bastion-хоста, как Xshell или WinSCP?Да, он понимает флаги Xshell -url/-newtab и параметр WinSCP /sessionname=, поэтому bastion вроде JumpServer может открыть ShellRS напрямую, используя несохранённое соединение, которое не попадает в список хостов.
What are similar projects?omnyssh, WindTerm, pebrel, navop, Netcatty, AceShell, tailcat, herdr-gpui
Creator
since2006
Size
14.3 MB
Stars
346
Age
1mo
Commits · 90 Days