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 风格的主机管理、多标签终端、WinSCP 风格的双栏 SFTP 浏览器和 SSH 端口转发整合在一个窗口里。
它和大多数跨平台桌面应用一样是基于 Electron 的吗?不是。它用 Rust 加 GPUI(Zed 编辑器的 GPU 加速 UI 框架)编写,而不是 Electron 或 JVM。
怎么把它跑起来?从 shellrs.com/download 或 GitHub Releases 下载适合你操作系统的安装包(macOS 用 DMG,Windows 用 EXE 安装程序,Linux 用 AppImage),然后点击“新建主机”添加服务器,双击即可连接。
现阶段有哪些不完善的地方?Windows 安装程序尚未代码签名,SmartScreen 可能需要选择“更多信息”>“仍要运行”。系统监控、进程、服务和 Docker 侧边栏工具只对 Linux 主机有效,SFTP 的目录同步/搜索仍在路线图上。
它必须用 Apple Silicon 吗,还是 Intel Mac 和 Linux 上也能用?两种 Mac 架构都有各自签名并经过公证的 DMG,另有 Windows x64 安装程序和 Linux x64 AppImage。
我保存的密码和连接数据实际存在哪里?密码和密钥口令只保存在操作系统钥匙串里(macOS Keychain、Windows 凭据管理器、Linux Secret Service),绝不会存进本地 SQLite 数据库。匿名使用统计(版本、操作系统、CPU 架构、功能使用情况)会发送到 Aptabase,并且可以关闭。
如果我修改了 ShellRS,GPL-3.0 许可证意味着什么?你可以自由使用和再分发 ShellRS,无论是否商用;但你分发的任何修改版本也必须以 GPL-3.0 附带完整源代码。
shellrs CLI 能让 Claude Code 这样的 AI 代理做什么?它提供 hosts、credentials、exec、upload、download 和 sync 命令;由运行中的 ShellRS 应用代表代理登录,所以命令本身永远接触不到密码或私钥。
SFTP 传输能在连接断开后继续吗?可以。数据先写入 .filepart,断线后会在 1 秒、3 秒和 10 秒后重试,重启后 ShellRS 还会询问是否续传同一传输。
这里的端口转发是怎么工作的?它支持本地(-L)、远程(-R)和动态 SOCKS(-D)转发,每种都以实时图示显示,各自拥有独立的 SSH 连接,断开后最多自动重连三次。
ShellRS 能像 Xshell 或 WinSCP 那样从堡垒机启动吗?可以。它能识别 Xshell 的 -url/-newtab 参数和 WinSCP 的 /sessionname=,所以 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