A powerful cross-platform SSH terminal application built with Electron + React
δΈζ | Download | Features | Development
SimpleShell is a modern, feature-rich SSH terminal application that combines the power of Electron's desktop capabilities with React's intuitive development experience. Designed for developers and system administrators who need efficient remote server management.
- Multi-Protocol Support: SSH, Telnet, and local PowerShell terminals
- Connection Pooling: Intelligent connection reuse to minimize resource usage
- Smart Tabs: Drag-drop tab reordering, merging, and split-screen support
- Group Synchronization: Execute commands across multiple connections simultaneously
- Visual Server Map: Geographic visualization of server locations worldwide
- Full SFTP Browser: Intuitive file browsing with drag-drop operations
- Bulk Transfers: Upload/download entire folders with progress tracking
- Zero-Copy Engine: High-performance file transfers with minimal memory usage
- Smart Caching: Multi-level cache for improved file access speed
- File Preview: Built-in viewer for text, images, code, and PDFs
- Intelligent Command Helper: AI assistant for command suggestions and explanations
- Multi-Model Support: Configurable AI providers and models
- Streaming Responses: Real-time AI responses with context awareness
- Worker Thread Processing: Non-blocking AI operations for smooth performance
- Modern UI: Material-UI v7 with smooth animations and transitions
- Theme Support: Dark and light modes with system preference detection
- Command History: Intelligent command suggestions and auto-completion
- Multi-Language: Full internationalization (English and Chinese)
- Shortcut Management: Custom command shortcuts and macros
- Resource Monitor: Real-time CPU, memory, and network statistics
- Remote System Info: Monitor remote server performance via SSH
- Network Diagnostics: IP address lookup with geolocation
- Security Tools: Built-in password generator with customizable rules
- Lazy Loading: Components loaded on-demand for faster startup
- Backpressure Control: Stable file transfers with flow control
- Memory Management: Active memory pool with leak detection
- Connection Health Monitoring: Automatic reconnection and failover
Download the latest release for your platform from the Releases page.
- Windows:
.exeinstaller
If you prefer to build from source, follow the development instructions below.
- Node.js 22+ and npm
- Git
- Python (for node-gyp compilation)
- Build tools for your platform:
- Windows: Visual Studio Build Tools or Visual Studio
- macOS: Xcode Command Line Tools
- Linux: build-essential package
# Clone the repository
git clone https://github.com/funkpopo/simpleshell.git
cd simpleshell
# Install dependencies
npm install# Start development server with hot reload
npm run startThis will:
- Start the Webpack dev server on port 3001
- Launch Electron in development mode
- Enable hot module replacement for React components
# Format code with Prettier
npm run format
# Run ESLint (configure via .eslintrc.json)
npx eslint src/
# Package application for current platform
npm run package
# Build distributable installers
npm run make
# Publish application (requires configuration)
npm run publish# Build for current platform
npm run make
# Build for specific platform
npm run make -- --platform=win32
npm run make -- --platform=darwin
npm run make -- --platform=linuxsimpleshell/
βββ src/
β βββ main.js # Main process entry (Electron main)
β βββ app.jsx # Renderer entry (React app)
β βββ preload.js # Preload script (contextBridge/expose)
β βββ components/ # React UI components
β βββ core/ # Core modules / low-level primitives
β β βββ app/ # App bootstrap wiring
β β βββ connection/ # Protocol connection primitives/pools
β β βββ ipc/ # IPC helpers/services
β β βββ terminal/ # Terminal runtime (local/remote)
β β βββ local-terminal/ # Local terminal integration
β β βββ process/ # Process/pty helpers
β β βββ proxy/ # Proxy management
β β βββ services/ # Shared core services
β β βββ window/ # Window + lifecycle helpers
β β βββ workers/ # Worker-thread logic
β βββ modules/ # Feature modules (used by the UI)
β β βββ connection/ # Connection handling (app-level orchestration)
β β βββ filemanagement/ # File manager / transfer orchestration
β β βββ sftp/ # SFTP operations
β β βββ system-info/ # System monitoring (local/remote)
β β βββ terminal/ # Terminal feature
β βββ services/ # App services (e.g. config)
β βββ store/ # State management
β βββ workers/ # Worker entry points
β βββ hooks/ # React hooks
β βββ contexts/ # React contexts
β βββ i18n/ # Internationalization
β βββ styles/ # Global styles
β βββ theme/ # Theme tokens/styles
β βββ utils/ # Shared utilities
βββ transfernative/ # Native transfer sidecar (Rust)
βββ forge.config.js # Electron Forge configuration
βββ webpack.main.config.js # Webpack config for Electron main
βββ webpack.renderer.config.js # Webpack config for Electron renderer
- Electron 40.4.1 - Cross-platform desktop framework
- React 19.2.4 - UI library (React 19)
- Material UI 7.3.9 - Component library
- Electron Forge + Webpack + ESLint/Prettier - Build and code quality toolchain
- JavaScript/JSX + Babel toolchain (no TypeScript build in this repo)
- xterm.js 6.1.0-beta.167 - Terminal emulator + add-ons
@xterm/addon-fit,@xterm/addon-search,@xterm/addon-web-links,@xterm/addon-image,@xterm/addon-webgl
- ssh2 1.17.0 - SSH/SFTP client
- node-pty 1.2.0-beta.11 - Pseudo terminal support
- telnet-client 2.2.13 - Telnet client
- Rust sidecar (
transfernative/) - Native βtransfer-sidecarβ to speed up/robustify large transfers
- CodeMirror 6 (
@codemirror/*,@uiw/react-codemirror) - Syntax highlighting and editors - highlight.js - Additional code highlighting
- react-markdown +
remark-gfm- Markdown rendering - react-syntax-highlighter - Fallback code highlighting for rendered markdown/code
- react-pdf - PDF preview
- DND kit (
@dnd-kit/*) - Drag-and-drop interactions
- i18next + react-i18next - Internationalization
- react-simple-maps - World map visualization
- systeminformation - System info collection
- Proxy support:
http-proxy-agent,https-proxy-agent,socks-proxy-agent - Performance helpers:
react-window,react-window-infinite-loader
-
Core vs Modules
src/core/connection: Canonical, low-level connection primitives and pools. Files follow*-connection-pool.jsnaming (e.g.,ssh-connection-pool.js,telnet-connection-pool.js) and a sharedbase-connection-pool.js.src/modules/connection: App-level orchestration that composes the core pools and SFTP manager into a single service used by the app (exposed viarequire("./modules/connection")).
-
Naming consistency
- Use
*-connection-poolfor protocol-specific pools. - Legacy advanced pool/manager have been removed.
ssh-advanced-pool.jswas consolidated intosrc/core/connection/ssh-pool.js.- Deprecated
src/core/connection/connection-manager.jshas been deleted to avoid split control paths.
- Deprecated
src/core/connection/connection-monitor.jshas been removed. Connection health and observability now rely on:- Pool health checks (
base-connection-pool.js) - Reconnection state machine (
reconnection-manager.js) - Network latency service (
networkLatencyService.js)
- Pool health checks (
- Use
-
Import guidance
- For pools:
const { sshConnectionPool, telnetConnectionPool } = require("../../core/connection"); - For app-level connection features (incl. SFTP):
const connectionManager = require("./modules/connection");
- For pools:
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
If you encounter any issues or have questions:
- Open an issue on GitHub Issues
- Check existing issues for solutions
- Provide detailed information about your environment and the problem
Distributed under the Apache License 2.0. See LICENSE for more information.
funkpopo - [email protected]
