A fast, modern Remote Desktop Protocol (RDP) client built with Electron, React, and TailwindCSS. Manage multiple PC connections with encrypted credential storage, independently pinnable windows, and full video/audio support.
- Encrypted Storage β All connections and credentials are encrypted with AES-256-GCM, derived from a machine-specific key
- Multiple Connections β Save and organize unlimited RDP connections with groups, tags, and color coding
- Independently Pinnable Windows β Each connection opens in its own window that can be pinned always-on-top
- Dynamic Resizing β Session windows resize dynamically with smart sizing enabled
- Native RDP Protocol β Pure TypeScript RDP implementation β no external executables (no mstsc.exe)
- Canvas Rendering β Remote desktop rendered natively on HTML5 Canvas with bitmap decompression
- Full Audio Support β RDPSND virtual channel with Web Audio API playback (configurable per connection)
- Keyboard & Mouse β Full input forwarding with scancode mapping for all keys
- Modern UI β Dark theme, glass morphism, grid/list views, search, and smooth animations
- NLA/TLS Security β NTLMv2 authentication via CredSSP, TLS transport encryption
- Resource Redirection β Clipboard virtual channel support
- Electron β Native desktop shell with multi-window support
- React 18 β UI framework with hooks
- Vite β Fast build tooling with HMR
- TailwindCSS β Utility-first styling
- Lucide Icons β Clean, consistent iconography
- Node.js Crypto β AES-256-GCM encryption for connection data
- Custom RDP Stack β Pure TypeScript RDP protocol (X.224, MCS/T.125, GCC, NLA/CredSSP, RDPSND)
- HTML5 Canvas β Bitmap frame rendering with RLE decompression
- Web Audio API β PCM audio playback from RDPSND virtual channel
Winget (recommended):
winget install bluewhackadoo.RDPeaChocolatey:
choco install rdpeaManual: Download the latest .exe installer from Releases
Homebrew:
brew install --cask rdpeaManual: Download the latest .dmg from Releases
AppImage (universal):
wget https://github.com/bluewhackadoo/RDPea/releases/latest/download/RDPea-1.0.3.AppImage
chmod +x RDPea-1.0.3.AppImage
./RDPea-1.0.3.AppImageDebian/Ubuntu:
wget https://github.com/bluewhackadoo/RDPea/releases/latest/download/rdpea_1.0.3_amd64.deb
sudo dpkg -i rdpea_1.0.3_amd64.debFedora/RHEL:
wget https://github.com/bluewhackadoo/RDPea/releases/latest/download/rdpea-1.0.3.x86_64.rpm
sudo rpm -i rdpea-1.0.3.x86_64.rpmSnap:
sudo snap install rdpea- Node.js 18+
- npm or yarn
- Windows 10/11, macOS, or Linux (no external RDP dependencies)
npm installnpm run devThis starts both the Vite dev server and the Electron app with hot reload.
To create distributable binaries for your platform:
npm run electron:buildThis produces platform-specific installers in the release/ folder:
Windows:
RDPea Setup [version].exeβ NSIS installer (one-click install)RDPea [version].exeβ Portable executable (no installation required)
macOS:
RDPea-[version].dmgβ Disk image installer
Linux:
RDPea-[version].AppImageβ Portable AppImage
The build process:
- Compiles TypeScript (Electron main process + RDP stack)
- Bundles React app with Vite
- Packages with electron-builder using the generated icon
- Creates platform-specific installers with proper code signing (if configured)
βββ electron/
β βββ main.ts # Electron main process, IPC, window management
β βββ preload.ts # Context bridge API exposed to renderer
β βββ rdp/ # Native TypeScript RDP protocol stack
β βββ client.ts # Main RDP client orchestrator
β βββ transport.ts # TCP/TLS transport layer
β βββ protocol.ts # X.224, MCS (T.125), GCC protocol layers
β βββ security.ts # RDP security, encryption, PDU helpers
β βββ ntlm.ts # NTLMv2 auth for NLA/CredSSP
β βββ bitmap.ts # RDP bitmap RLE decompression
β βββ input.ts # Keyboard scancode & mouse input PDUs
β βββ audio.ts # RDPSND virtual channel (audio output)
β βββ types.ts # Protocol constants & interfaces
β βββ bufferReader.ts # Binary protocol reading
β βββ bufferWriter.ts # Binary protocol writing
βββ src/
β βββ main.tsx # React entry point
β βββ App.tsx # Root component with routing
β βββ index.css # Tailwind base + custom components
β βββ types.ts # TypeScript interfaces & global window type
β βββ hooks/
β β βββ useConnections.ts # Connection CRUD, search, sort, persist
β βββ components/
β βββ TitleBar.tsx # Custom frameless title bar with pin
β βββ Dashboard.tsx # Main connection manager view
β βββ Sidebar.tsx # Groups, search, view toggle
β βββ ConnectionCard.tsx # Grid/list card with actions
β βββ ConnectionForm.tsx # Add/edit connection modal
β βββ SessionView.tsx # Canvas-based RDP session renderer
βββ package.json
βββ vite.config.ts
βββ tailwind.config.js
βββ tsconfig.json
- Credentials are encrypted at rest using AES-256-GCM with a key derived via
scryptfrom machine-specific identifiers - Connection data is stored in
%APPDATA%/rdpea/connections.enc - RDP connections use TLS encryption with NTLMv2 authentication (CredSSP/NLA)
- No external executables β the entire RDP protocol runs within the Electron process
- Standard RDP security (RC4 encryption) supported as fallback for legacy servers
MIT License - See LICENSE file for details.
Attribution Required: This software is licensed under the MIT License, which requires that the copyright notice and permission notice be included in all copies or substantial portions of the software. Any derivative works or distributions must retain the original copyright attribution to bluewhackadoo.