A modern, cross-platform desktop client for JumpServer built with Electron
- 🎯 Cross-Platform Support - Native applications for macOS, Windows, and Linux
- 🔐 Secure Connections - Support for SSH, RDP, VNC, and database protocols
- 🗄️ Multi-Database Support - Connect to MySQL, PostgreSQL, Redis, MongoDB, Oracle, SQL Server, ClickHouse, and more
- 🖥️ Device Management - Manage Linux and Windows servers seamlessly
- 🎨 Modern UI - Beautiful, responsive interface built with Vue 3 and Nuxt UI
- ⚡ Desktop Integration - Isolated Electron runtime with Node-based desktop services
- 🔗 Deep Link Support - Launch connections directly from web browsers via custom protocol (
jms2://) - 🌓 Theme Support - Light and dark mode
- 🌍 Internationalization - Multi-language support (English, Chinese)
- 📋 Clipboard Integration - Easy copy-paste functionality
- 🔔 Notifications - Real-time connection status notifications
- 💾 Persistent Storage - Save your favorite connections and settings
- Vue 3 - Progressive JavaScript framework
- Nuxt UI - Fully styled and customizable components
- Electron 44 - Cross-platform windowing, native integration, and packaging
- Node.js - SSH helper, replay processing, and desktop services
- Optional FFmpeg plugin - Downloaded from Settings for H.264 replay encoding; system FFmpeg is never required
- Download the
.dmgfile from the Releases page - Open the downloaded
.dmgfile - Drag
JumpServer.appto yourApplicationsfolder - Double-click
JumpServer.appto launch (this will register the custom protocol)
- Download the
.msior.exeinstaller from the Releases page - Double-click the installer file
- Follow the installation wizard (may take 10-15 seconds)
- Launch JumpServer from the Start menu
# Download the .deb package
wget https://github.com/jumpserver/clients/releases/latest/download/jumpserver-client_*.deb
# Install using dpkg
sudo dpkg -i jumpserver-client_*.deb
# Or install using apt
sudo apt install ./jumpserver-client_*.deb# Download the .rpm package
wget https://github.com/jumpserver/clients/releases/latest/download/jumpserver-client_*.rpm
# Install using rpm
sudo rpm -i jumpserver-client_*.rpm
# Or install using dnf/yum
sudo dnf install ./jumpserver-client_*.rpm- From JumpServer Web Interface: Click on any asset connection link - the client will automatically launch
- From the Client: Browse your assets, select a connection, and click connect
- Custom Protocol: Use
jms2://links to launch connections programmatically
- SSH/Telnet - Terminal connections (PuTTY, XShell, SecureCRT, iTerm2)
- RDP - Remote Desktop Protocol for Windows servers
- VNC - Virtual Network Computing for remote desktop access
- Database Connections:
- MySQL
- PostgreSQL
- Redis
- MongoDB
- Oracle
- SQL Server
- ClickHouse
- 达梦 (DM)
- Favorites - Star frequently used assets for quick access
- Search - Quickly find assets by name or IP address
- Categories - Organize assets by type (Linux, Windows, Database)
- Rename - Customize asset display names
- Node.js >= 24
- pnpm >= 11
- System Dependencies:
- macOS: Xcode Command Line Tools
- Windows: Microsoft Visual C++ Build Tools
- Linux:
build-essential,fakeroot, andrpmwhen producing DEB/RPM packages - Windows: WiX Toolset 3 (
candleandlight) when producing MSI packages
# Clone the repository
git clone https://github.com/jumpserver/clients.git
cd clients
# Install dependencies
pnpm install
# Start development server
pnpm electron:dev# Build for current platform
pnpm electron:build
# Build an unpacked application directory
pnpm electron:package:dirThe Docker build installs only the Web workspace dependency graph and writes the generated Nuxt application to /opt/luna. Electron code and native desktop dependencies are excluded from its build context.
docker build -t jumpserver/luna:local .The Web workflow builds linux/amd64 and linux/arm64, and publishes tagged images to jumpserver/luna. Desktop clients are packaged separately for macOS, Linux, and Windows by the client release workflow.
clients/
├── ui/ # Frontend (Vue/Nuxt)
│ ├── components/ # Vue components
│ ├── pages/ # Application pages
│ ├── composables/ # Vue composables
│ └── layouts/ # Layout components
├── electron/ # Electron main process and preload bridge
│ ├── src/ # TypeScript desktop runtime by domain
│ └── tests/ # Electron unit tests and fixtures
└── i18n/ # Internationalization files
pnpm web:dev # Start Nuxt web development
pnpm electron:dev # Start Electron development
pnpm electron:build # Build production artifacts
make docker-build # Build the Web Docker image
pnpm fmt # Format frontend code with Oxfmt
pnpm lint # Run lint checks
pnpm reset # Clean build artifactsContributions 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
- Follow the existing code style
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
- Ensure all checks pass before submitting
This project is licensed under the MIT License - see the LICENSE file for details.
- JumpServer - The open-source bastion host
- Electron - Cross-platform desktop runtime
- Vue.js - The Progressive JavaScript Framework
- Nuxt - The Intuitive Vue Framework
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- JumpServer Community: JumpServer Community
Made with ❤️ by the JumpServer Team

