An open API service indexing awesome lists of open source software.

https://github.com/goodboy008/r-shell

๐Ÿš€ A modern SSH client built with Tauri, React & Rust. AI-powered development: Frontend generated from Figma Make, developed with GitHub Copilot. Features multi-session management, file browser, system monitoring & more.
https://github.com/goodboy008/r-shell

ai-assisted desktop-app figma github-copilot react rust sftp ssh-client system-monitor tauri terminal typescript

Last synced: 10 days ago
JSON representation

๐Ÿš€ A modern SSH client built with Tauri, React & Rust. AI-powered development: Frontend generated from Figma Make, developed with GitHub Copilot. Features multi-session management, file browser, system monitoring & more.

Awesome Lists containing this project

README

          

# R-Shell โ€” Lightweight, Fast SSH Client for macOS, Windows & Linux

[![GitHub license](https://img.shields.io/github/license/GOODBOY008/r-shell)](https://github.com/GOODBOY008/r-shell/blob/main/LICENSE)
[![Test](https://github.com/GOODBOY008/r-shell/actions/workflows/test.yml/badge.svg)](https://github.com/GOODBOY008/r-shell/actions/workflows/test.yml)
[![Release](https://github.com/GOODBOY008/r-shell/actions/workflows/release.yml/badge.svg)](https://github.com/GOODBOY008/r-shell/actions/workflows/release.yml)
[![GitHub stars](https://img.shields.io/github/stars/GOODBOY008/r-shell)](https://github.com/GOODBOY008/r-shell/stargazers)
[![GitHub issues](https://img.shields.io/github/issues/GOODBOY008/r-shell)](https://github.com/GOODBOY008/r-shell/issues)
[![Tauri](https://img.shields.io/badge/Tauri-2.0-blue?logo=tauri)](https://tauri.app/)
[![React](https://img.shields.io/badge/React-19-61dafb?logo=react)](https://react.dev/)
[![Rust](https://img.shields.io/badge/Rust-Latest-orange?logo=rust)](https://www.rust-lang.org/)

A modern, lightweight SSH/SFTP/FTP client built with Rust and Tauri 2. Uses ~98% less memory than FinalShell (~34 MB vs ~1.7 GB). Installer under 10 MB โ€” 12ร— smaller.

**Low memory** ยท **Native speed** ยท **Multi-protocol** ยท **Split terminals** ยท **SFTP file manager** ยท **GPU monitoring** ยท **Log viewer** ยท **Directory sync**

[Why R-Shell?](#-why-r-shell) ยท [Features](#-features) ยท [Install](#-installation) ยท [Screenshots](#-screenshots) ยท [Contributing](CONTRIBUTING.md) ยท [License](LICENSE)

---

## ๐Ÿ“ธ Screenshots


R-Shell Application Screenshot

R-Shell โ€” split terminals, file manager, and system monitor in a single window


---

## ๐Ÿš€ Why R-Shell?

Most popular SSH clients (FinalShell, MobaXterm, Xshell) are built on Java or Electron, which means high memory usage even when idle. R-Shell is built with Rust + Tauri 2, delivering native performance with a fraction of the memory footprint.

### Memory Comparison (Real-World Test)

Both apps running side-by-side on macOS (Apple Silicon, 16 GB RAM), measured with macOS `footprint` (same metric as Activity Monitor):

| App | Technology | Memory | Relative |
|-----|-----------|--------|----------|
| **R-Shell** | Rust + Tauri 2 | **~34 MB** | **1ร—** |
| FinalShell | Java (Identifier: st) | **~1.7 GB** | **~50ร—** |

> R-Shell uses approximately **98% less memory** than FinalShell โ€” that's **~1.7 GB saved** for your IDE, browser, and Docker.

### Installer Size Comparison

| Platform | R-Shell | FinalShell | Savings |
|----------|---------|-----------|---------|
| **Windows** | **3.99 MB** | 64 MB | **~16ร—** smaller |
| **macOS** | **8.13 MB** | 102 MB | **~12ร—** smaller |

> No bundled JVM, no Chromium โ€” Tauri uses the OS native webview, so the installer stays tiny.

### Why does this matter?

- Developers often keep SSH clients open all day alongside IDEs, browsers, and Docker
- FinalShell alone can consume over 10% of a 16 GB machine's RAM while idle
- Rust's zero-cost abstractions mean low memory without sacrificing features
- No JVM startup overhead โ€” R-Shell launches instantly

---

## ๐ŸŽฏ About

R-Shell is a free, open-source, cross-platform SSH client that combines an interactive terminal, a dual-panel file manager, real-time system & GPU monitoring, and log viewing โ€” all in one VS Code-like workspace. Built with Rust for native performance and minimal resource usage, it's a lightweight alternative to FinalShell, MobaXterm, and Xshell.

- ๐Ÿš€ **Native Performance** โ€” Tauri 2 + Rust backend, not Electron or Java. ~34 MB memory footprint vs FinalShell's ~1.7 GB.
- ๐ŸŽจ **AI-Generated Frontend** โ€” The UI was generated from [Figma designs](https://www.figma.com/make/uUd7WO54vPnv03SmioKWqj/SSH-Client-Application)
- ๐Ÿค– **AI-Assisted Development** โ€” The entire codebase is built with **GitHub Copilot**
- ๐ŸŒ **Cross-Platform** โ€” macOS, Windows, and Linux

---

## โœจ Features

### ๐Ÿ”Œ Multi-Protocol Connections
| Protocol | Authentication | Description |
|----------|---------------|-------------|
| **SSH** | Password, Public Key (with passphrase) | Full interactive PTY terminal |
| **SFTP** | Password, Public Key | Standalone file transfer sessions |
| **FTP** | Password, Anonymous | Plain FTP file transfers |
| **FTPS** | Password, Anonymous | FTP over TLS |

- **Connection Manager** โ€” Tree-view sidebar with folders, favorites, tags, drag-and-drop organization
- **Connection Profiles** โ€” Save, import/export (JSON), duplicate, edit saved connections
- **Session Restore** โ€” Automatically reconnects your previous workspace on launch
- **Quick Connect** โ€” Toolbar dropdown with recent connections
- **Auto Reconnect** โ€” Exponential backoff reconnection (up to 5 attempts)

### ๐Ÿ’ป Interactive PTY Terminal
- **Full terminal emulation** via xterm.js v5 โ€” supports vim, htop, top, less, and all interactive programs
- **WebSocket streaming** โ€” low-latency bidirectional I/O with flow control (inspired by ttyd)
- **WebGL renderer** โ€” hardware-accelerated rendering with automatic canvas fallback
- **Terminal search** โ€” regex and case-sensitive search with F3 navigation
- **Context menu** โ€” copy, paste, select all, clear, save to file, reconnect
- **IME / CJK input** โ€” full support for Chinese, Japanese, Korean input methods

### ๐ŸชŸ Split Panes & Tab Groups
- **Split in 4 directions** โ€” Up, Down, Left, Right
- **Recursive grid layout** โ€” unlimited nested splits with resizable panels
- **Tab management** โ€” add, close, duplicate, reorder (drag-and-drop), move between groups
- **Drop zone overlay** โ€” drag tabs onto 5 drop zones (up/down/left/right/center)
- **Keyboard shortcuts** โ€” Ctrl+\ split, Ctrl+1-9 focus group, Ctrl+Tab cycle tabs

### ๐Ÿ“ Dual-Panel File Manager (FileZilla-style)
- **Local + Remote panels** โ€” side-by-side browsing with upload/download buttons
- **Works over SSH, SFTP, FTP, and FTPS** โ€” unified file operations across all protocols
- **File operations** โ€” create, rename, delete, copy files and directories
- **Breadcrumb navigation** โ€” editable address bar with click-to-navigate
- **Sort & filter** โ€” by name, size, date, permissions, owner (ascending/descending)
- **Multi-select** โ€” select multiple files for batch operations
- **Transfer queue** โ€” queued transfers with progress, speed, ETA, cancel, and retry
- **Recursive directory transfer** โ€” uploads/downloads entire directory trees

### ๐Ÿ”„ Directory Synchronization
- **4-step sync wizard** โ€” Configure โ†’ Compare โ†’ Review โ†’ Sync
- **Sync directions** โ€” Local-to-Remote or Remote-to-Local
- **Comparison criteria** โ€” Size, Modified time, or both
- **Diff preview** โ€” per-item checkboxes with upload/download/delete/skip actions
- **Exclude patterns** โ€” skip `.git`, `node_modules`, `.DS_Store`, etc.

### ๐Ÿ“Š System Monitoring
- **CPU** โ€” real-time usage percentage with color-coded thresholds
- **Memory & Swap** โ€” total, used, free with percentage bars
- **Disk** โ€” per-mount filesystem usage with progress bars
- **Uptime & Load Average** โ€” at a glance
- **Process Manager** โ€” list processes sorted by CPU/MEM, kill with confirmation
- **Real-time charts** โ€” CPU history and memory area charts (Recharts)

### ๐ŸŽฎ GPU Monitoring
- **NVIDIA** (nvidia-smi) โ€” utilization, memory, temperature, power, fan speed, encoder/decoder
- **AMD** โ€” GPU stats support
- **Multi-GPU** โ€” GPU selector with individual or "all" view
- **History charts** โ€” utilization, memory, temperature over time
- **Temperature thresholds** โ€” color-coded: green < 60ยฐC, yellow < 75ยฐC, orange < 85ยฐC, red โ‰ฅ 85ยฐC

### ๐ŸŒ Network Monitoring
- **Bandwidth** โ€” per-interface rx/tx bytes per second
- **Latency** โ€” real-time network latency measurements
- **Active connections** โ€” protocol, local/remote address, state, PID
- **Usage charts** โ€” download/upload history

### ๐Ÿ“‹ Log Monitoring
- **Multi-source** โ€” log files, journalctl services, Docker containers, custom paths
- **Auto-discovery** โ€” automatically finds available log sources on the remote host
- **Level filtering** โ€” ERROR, WARN, INFO, DEBUG, TRACE filter chips
- **Regex search** โ€” with match highlighting
- **Live tail** โ€” configurable refresh interval (1s โ€“ 30s)
- **Line numbers + timestamps + level badges** โ€” parsed from common log formats
- **Download** โ€” save log content locally

### ๐ŸŽจ Appearance & Customization
- **10 terminal color themes** โ€” VS Code Dark, Monokai, Solarized Dark/Light, Dracula, One Dark, Nord, Gruvbox Dark, Tokyo Night, Matrix
- **Dark / Light / Auto** โ€” application theme follows system preference
- **7 font families** โ€” Menlo, JetBrains Mono, Fira Code, Source Code Pro, Consolas, Monaco, Courier New
- **Configurable** โ€” font size, line height, letter spacing, cursor style (block/underline/bar), scrollback (1Kโ€“100K lines)
- **Background images** โ€” custom image with opacity, blur, and position controls
- **Terminal transparency** โ€” configurable opacity

### โŒจ๏ธ Keyboard Shortcuts
| Shortcut | Action |
|----------|--------|
| `Ctrl+B` | Toggle Connection Manager |
| `Ctrl+J` | Toggle File Browser |
| `Ctrl+M` | Toggle Monitor Panel |
| `Ctrl+Z` | Toggle Zen Mode |
| `Ctrl+\` | Split terminal right |
| `Ctrl+Shift+\` | Split terminal down |
| `Ctrl+1` โ€“ `9` | Focus terminal group |
| `Ctrl+W` | Close active tab |
| `Ctrl+Tab` | Next tab |
| `Cmd/Ctrl+F` | Search in terminal |
| `F3` / `Shift+F3` | Find next / previous |

### ๐Ÿ”ง Additional Features
- **VS Code-like layout** โ€” resizable left/right sidebars + bottom panel with 5 layout presets (Default, Minimal, Focus, Full Stack, Zen)
- **Auto-update** โ€” check for updates with download progress and install-and-relaunch
- **Menu bar** โ€” File, Edit, Tools, Connection menus with full keyboard shortcuts
- **Status bar** โ€” active connection name, protocol badge, connection status indicator
- **49 Tauri commands** โ€” comprehensive Rust backend API

---

## ๐Ÿ›  Tech Stack

### Backend โ€” Why It's Lightweight
- **Tauri 2** โ€” native desktop framework, uses the OS webview instead of bundling Chromium (unlike Electron)
- **Rust** โ€” zero-cost abstractions, no garbage collector, no JVM โ€” this is why R-Shell uses ~34 MB vs FinalShell's ~1.7 GB
- **russh / russh-sftp** โ€” pure Rust SSH & SFTP protocol implementation
- **suppaftp** โ€” FTP/FTPS client
- **tokio** โ€” async runtime with minimal overhead
- **tokio-tungstenite** โ€” WebSocket server for PTY streaming
- **sysinfo** โ€” system stats collection

### Frontend
- **React 19** + **TypeScript** โ€” type-safe modern React
- **Tailwind CSS** โ€” utility-first styling
- **Radix UI / shadcn/ui** โ€” 48+ accessible component primitives
- **xterm.js v5** โ€” terminal emulation with WebGL, search, web-links, fit, overlay addons
- **Recharts** โ€” data visualization for monitoring
- **React Hook Form** โ€” form handling
- **Lucide Icons** โ€” icon set

---

## ๐Ÿ“ฆ Installation

### ๐Ÿบ Homebrew (macOS โ€” Recommended)

```bash
brew tap GOODBOY008/tap
brew install --cask r-shell
```

**Update:**

```bash
brew upgrade --cask r-shell
```

### ๐Ÿ“ฅ Download Releases

Download from the [Releases](https://github.com/GOODBOY008/r-shell/releases) page:

| Platform | File |
|----------|------|
| macOS (Apple Silicon) | `r-shell_x.x.x_aarch64.dmg` |
| macOS (Intel) | `r-shell_x.x.x_x64.dmg` |
| Windows | `r-shell_x.x.x_x64-setup.exe` |
| Linux | `r-shell_x.x.x_amd64.AppImage` / `.deb` |

---

## ๐Ÿš€ Development

### Prerequisites

- Node.js โ‰ฅ 18
- pnpm
- Rust & Cargo

### Quick Start

```bash
git clone https://github.com/GOODBOY008/r-shell.git
cd r-shell
pnpm install

# Web only
pnpm dev

# Desktop with Tauri
pnpm tauri dev
```

### Build for Production

```bash
pnpm build && pnpm tauri build
```

### Testing

```bash
pnpm test # Frontend (Vitest)
cd src-tauri && cargo test # Rust
pnpm test:e2e # E2E
```

### Version Bumping

```bash
pnpm run version:patch # 1.0.0 โ†’ 1.0.1
pnpm run version:minor # 1.0.0 โ†’ 1.1.0
pnpm run version:major # 1.0.0 โ†’ 2.0.0
```

---

## ๐Ÿ“ Project Structure

```
r-shell/
โ”œโ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ components/ # React components
โ”‚ โ”‚ โ”œโ”€โ”€ ui/ # 48+ shadcn/ui primitives
โ”‚ โ”‚ โ”œโ”€โ”€ terminal/ # Split panes, tab groups, grid renderer
โ”‚ โ”‚ โ”œโ”€โ”€ pty-terminal.tsx # PTY terminal (WebSocket + xterm.js)
โ”‚ โ”‚ โ”œโ”€โ”€ connection-*.tsx # Connection dialog, manager, tabs
โ”‚ โ”‚ โ”œโ”€โ”€ file-*.tsx # File browser, panels
โ”‚ โ”‚ โ”œโ”€โ”€ sftp-panel.tsx # Dual-panel SFTP manager
โ”‚ โ”‚ โ”œโ”€โ”€ sync-dialog.tsx # Directory synchronization
โ”‚ โ”‚ โ”œโ”€โ”€ transfer-*.tsx # Transfer queue & controls
โ”‚ โ”‚ โ”œโ”€โ”€ system-monitor.tsx # CPU/MEM/Disk/GPU monitor
โ”‚ โ”‚ โ”œโ”€โ”€ network-monitor.tsx# Network stats
โ”‚ โ”‚ โ”œโ”€โ”€ log-monitor.tsx # Multi-source log viewer
โ”‚ โ”‚ โ””โ”€โ”€ settings-modal.tsx # 6-tab settings
โ”‚ โ”œโ”€โ”€ lib/ # State management & utilities
โ”‚ โ””โ”€โ”€ styles/ # Global CSS
โ”œโ”€โ”€ src-tauri/ # Tauri / Rust backend
โ”‚ โ””โ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ ssh/ # SSH/SFTP implementation
โ”‚ โ”œโ”€โ”€ ftp_client.rs # FTP/FTPS client
โ”‚ โ”œโ”€โ”€ commands.rs # 49 Tauri commands
โ”‚ โ”œโ”€โ”€ websocket_server.rs# PTY WebSocket streaming
โ”‚ โ””โ”€โ”€ connection_manager.rs # Thread-safe session lifecycle
โ””โ”€โ”€ docs/ # Documentation
```

---

## ๐Ÿค Contributing

We welcome contributions! This project is an experiment in AI-assisted development.

**Quick Links:**
- [Contributing Guidelines](CONTRIBUTING.md)
- [Code of Conduct](CODE_OF_CONDUCT.md)
- [Version Bump Guide](docs/VERSION_BUMP.md)
- [Layout Guide](LAYOUT_GUIDE.md)
- [Quick Start](QUICKSTART.md)

### How to Contribute

1. Fork the repo
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit (`git commit -m 'feat: add amazing feature'`)
4. Push (`git push origin feature/amazing-feature`)
5. Open a Pull Request

### Areas We Need Help

- ๐Ÿ› Bug fixes and issue reports
- ๐Ÿ“ Documentation improvements
- โœจ Feature enhancements
- ๐Ÿงช Test coverage
- ๐ŸŒ Internationalization (i18n)
- ๐ŸŽจ UI/UX improvements

---

## ๐Ÿ“„ License

MIT โ€” see [LICENSE](LICENSE).

## ๐ŸŒŸ Star History

[![Star History Chart](https://api.star-history.com/svg?repos=GOODBOY008/r-shell&type=Date)](https://star-history.com/#GOODBOY008/r-shell&Date)

## ๐Ÿ’ฌ Community

- [Issues](https://github.com/GOODBOY008/r-shell/issues)
- [Discussions](https://github.com/GOODBOY008/r-shell/discussions)
- [Pull Requests](https://github.com/GOODBOY008/r-shell/pulls)

## ๐Ÿ™ Acknowledgments

- [shadcn/ui](https://ui.shadcn.com/) โ€” UI components
- [Figma Make](https://www.figma.com/make/) โ€” Design generation
- [Lucide](https://lucide.dev/) โ€” Icons
- [GitHub Copilot](https://github.com/features/copilot) โ€” AI pair programming

---

**Made with โค๏ธ and ๐Ÿค– AI**

If you like this project, please give it a โญ!