Profile
Back to NewsBack
GitHub Trending 11 min
Reader Mode
GOODBOY008/r-shell: Open-source SSH and remote desktop client for macOS, Windows, and Linux. Split terminals, SFTP/FTP/FTPS transfers, RDP/VNC, and server monitoring, built with Rust and Tauri.

GOODBOY008/r-shell: Open-source SSH and remote desktop client for macOS, Windows, and Linux. Split terminals, SFTP/FTP/FTPS transfers, RDP/VNC, and server monitoring, built with Rust and Tauri.

4 hours ago


📸 Screenshots

R-Shell Application Screenshot

R-Shell — split terminals, SFTP file manager, and system monitor in a single window


🚀 Why R-Shell?

Most SSH clients (FinalShell, MobaXterm, Xshell) run on Java or Electron — burning memory even at idle. R-Shell uses Rust + Tauri 2 for native performance at a fraction of the cost.

Memory Comparison

Measured on macOS (Apple Silicon, 16 GB RAM) using footprint:

| App | Technology | Memory | Relative | |-----|-----------|--------|----------| | R-Shell | Rust + Tauri 2 | ~34 MB | 1× | | FinalShell | Java | ~1.7 GB | ~50× |

Installer Size

| Platform | R-Shell | FinalShell | Savings | |----------|---------|-----------|----------| | Windows | 3.99 MB | 64 MB | 16× smaller | | macOS | 8.13 MB | 102 MB | 12× smaller |

No bundled JVM or Chromium — Tauri uses the OS native webview.

🎯 About

R-Shell combines an interactive terminal, dual-panel file manager, remote desktop viewer (RDP/VNC), real-time system/GPU monitoring, and log viewing in a single VS Code-like workspace. Built with Rust for native performance and minimal resource usage.

  • Native Performance — Tauri 2 + Rust backend, not Electron or Java
  • Cross-Platform — macOS, Windows, and Linux
  • Multilingual UI — English, Simplified Chinese and Polish, with more languages welcome

✨ Features

🔌 Multi-Protocol Connections

| Protocol | Authentication | Description | |----------|---------------|-------------| | SSH | Password, Public Key | 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 | | RDP | Password | Remote Desktop Protocol | | VNC | Password | Virtual Network Computing |

  • Connection Manager — Tree-view sidebar with folders, favorites, tags, and drag-and-drop reordering
  • SSH Tunnel (Jump Host) — Route connections through a bastion or jump server
  • Connection Profiles — Save, import/export (JSON), duplicate, and edit connections
  • Session Restore — Chrome-style lazy restore: reopens your workspace on launch, reconnects the tab you were on, and reconnects the rest as you open them
  • Quick Connect — Toolbar dropdown with recent connections
  • Auto Reconnect — Exponential backoff reconnection (up to 5 attempts)

🖥️ RDP Display

  • Balanced Auto (default) — Adapts to the window using logical pixels, capped at 1920×1080 while preserving the aspect ratio. Fullscreen uses the same limit and resizing waits for the window transition to settle.
  • Fixed resolution — Choose 720p, 1080p, or 1440p for a stable remote desktop. Fit to Window scales the image locally; fullscreen does not change the selected resolution.
  • Retina (optional) — Requests physical pixels with matching Windows text scaling (200% on a 2× display). Requires more bandwidth and processing, and depends on server support.
  • Bounded frame delivery — Combines dirty rectangles without losing changed pixels and waits for each canvas paint before sending another frame.

💻 Interactive PTY Terminal

  • Full terminal emulation — xterm.js 6 with support for vim, htop, top, less, and all interactive programs
  • WebSocket streaming — Low-latency bidirectional I/O with bounded flow control
  • WebGL renderer — Hardware-accelerated rendering with automatic canvas fallback and recovery
  • 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
  • Session detach — Cmd/Ctrl+Shift+H parks a session in the background with keep-alive; reattach anytime
  • Working-directory follow — Keep the remote file browser aligned with the active Bash terminal

🪟 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, close all, duplicate, reorder (drag-and-drop), move between groups
  • Drop zone overlay — Drag tabs onto 5 drop zones (up/down/left/right/center)
  • Keyboard shortcuts — Remappable split, group-focus, and tab commands with terminal alternatives that preserve shell input

📁 Dual-Panel File Manager (FileZilla-style)

  • Local + Remote panels — Side-by-side browsing with upload/download buttons
  • Multi-protocol — Works over SSH, SFTP, FTP, and FTPS
  • File operations — Create, rename, delete, copy files and directories
  • Built-in code editor — Open files in reusable workspace tabs, switch without losing edits, and save/discard safely on close. Automatic syntax highlighting for scripts, JSON/YAML/TOML, Nginx and systemd configs, with searchable language selection, find/replace, go-to-line, undo/redo, and quick appearance settings
  • Safer remote editing — Clear save status, confirmation before reloading unsaved changes, and retained edits when saving or reloading fails
  • File workflow — Open with Enter or a double-click, see unsaved editor changes in the file list, and keep directory selections through refresh and reconnect. Upload/download controls show the selected count and destination; rename and delete use inline validation and confirmation
  • 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 and batch delete
  • Transfer queue — Queued transfers with progress, speed, ETA, cancel, and retry
  • Recursive directory transfer — Upload/download 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 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 — 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 — 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)
  • Rich formatting — Line numbers, timestamps, and 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
  • Config backup — Export and import your full configuration

⌨️ Keyboard Shortcuts

Mod means Command on macOS and Control on Windows/Linux. Ctrl always means physical Control, including on macOS. Application shortcuts run in the focused R-Shell window and follow the focused area; dialogs and menus keep their own keys.

| Action | Default | Windows/Linux terminal alternative | |--------|---------|------------------------------------| | Toggle Connection Manager | Mod+B | Ctrl+Shift+B | | Toggle File Browser | Mod+J | Ctrl+Shift+J | | Toggle Monitor Panel | Mod+Shift+M | Same | | Toggle Zen Mode | Mod+Shift+Enter | Same | | Split terminal right | Mod+Backslash | Ctrl+Shift+E | | Split terminal down | Mod+Shift+Backslash | Same | | Focus terminal group | Mod+1 – Mod+9 | Ctrl+Shift+1 – Ctrl+Shift+9 | | New session / close active tab | Mod+N / Mod+W | Ctrl+Shift+N / Ctrl+Shift+W | | Next / previous tab | Ctrl+Tab / Ctrl+Shift+Tab | Same | | Detach session to background | Mod+Shift+H | Same | | Open Settings | Mod+Comma | Ctrl+Shift+Comma | | Search in terminal | macOS Cmd+F; others Ctrl+Shift+F | Same | | Clear terminal | macOS Cmd+K; others Ctrl+Shift+K | Same | | Paste into terminal | Mod+V | Same; local terminal behavior | | Find next / previous | F3 / Shift+F3 | Only while terminal search is open |

The terminal is shell first: unshifted Control/Alt combinations without Command/Meta stay with the shell, except Tab combinations and explicit terminal commands. For example, tmux still receives Ctrl+B; use the terminal alternative to toggle the sidebar. macOS Command defaults work directly in the terminal.

Application commands can be remapped, disabled, or reset in Settings → Keyboard. Local widget keys and system editing shortcuts retain their own behavior. See the keyboard shortcut guide for all defaults, contexts, conflict rules, and saved-binding migration.

🔧 Additional Features

  • Quick Commands — Right-sidebar panel for saving and running reusable command snippets
  • VS Code-like layout — Resizable left/right sidebars + bottom panel with 5 layout presets (Default, Minimal, Focus, Full Stack, Zen) and layout persistence
  • Remote Desktop — Built-in RDP and VNC viewer with clipboard sync and dynamic resizing
  • Launch at login — Start R-Shell automatically when you sign in
  • 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

📦 Installation

R-Shell ships on two release lines:

| | Stable (recommended) | Current (evolution line) | |---|---|---| | Audience | Most users | Early adopters | | Versions | 2.9.x, 3.1.x… | 3.0.0-current.1, -current.2… | | macOS | 10.13+, Apple Silicon & Intel | macOS 26+, Apple Silicon only | | Content | Bug fixes & security patches | All new features, promoted to stable every 4–6 weeks | | Where | releases/latest (marked "Latest") | Current-channel prereleases |

🍺 Homebrew (macOS — Recommended)

Installs the stable line:

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

Update:

brew upgrade --cask r-shell

Homebrew-managed installs update exclusively through brew — the in-app updater detects them and stands down automatically.

📥 Download Releases (stable)

Download from the 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 |

Direct downloads update themselves in-app on the stable channel.

On macOS 15 or later, choose Allow when macOS asks for Local Network access while connecting to a LAN server or local virtual machine. RDP retries the initial TCP connection for up to 30 seconds after a macOS “No route to host” error, so accepting the prompt can continue the same connection. A waiting notice offers Cancel; closing the tab also cancels the pending connection. Password and certificate failures are not retried by this permission recovery.

If the server remains unreachable, check System Settings → Privacy & Security → Local Network → r-shell, then try Connect again. Also check that the VM/server is running and the address, VPN, and route are correct: “No route to host” alone does not prove a permission denial. A development build launched from Terminal can have different access from the installed app; see Apple's Local Network privacy documentation.

macOS builds use free ad hoc signing for the complete app bundle. Building and distributing these packages does not require an Apple Developer account or paid certificate. macOS may still require you to approve opening the downloaded app in Privacy & Security, and Local Network permission may need to be granted again after an update. See Tauri ad hoc signing.

🧪 Current channel (pre-release)

The evolution line carries all new features and requires macOS 26 or later on Apple Silicon; Windows and Linux builds follow the same version numbers.

  • Get it from the current-channel release page, or
  • from 3.0.0-current.1 onward, switch in-app: Settings → Advanced → Update Channel → Current (offered only on eligible machines).
⚠️ The current channel only moves forward — the updater never downgrades. To return to stable, download the latest stable .dmg and install it over the app.

🛠 Tech Stack

Backend

  • Tauri 2 — Native desktop framework using the OS webview (no bundled Chromium)
  • Rust — Zero-cost abstractions, no GC, no JVM — ~34 MB vs ~1.7 GB
  • russh / russh-sftp — Pure Rust SSH & SFTP 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 — 45+ accessible component primitives
  • xterm.js 6 — Terminal emulation with WebGL, search, web-links, fit, and overlay addons
  • CodeMirror 6 — Embedded code editor with syntax highlighting
  • Recharts — Data visualization for monitoring
  • i18next — Internationalization (English, Simplified Chinese, Polish)
  • Lucide Icons — Icon set

🤝 Contributing

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

Quick Links:

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.

💬 Community

🙏 Acknowledgments


Made with ❤️ and 🤖 AI

If you like this project, please give it a ⭐!

Chat with me