Skip to content

bluewhackadoo/RDPea

Repository files navigation

RDPea β€” Lightweight RDP Remote Desktop Client for πŸͺŸWindows, 🍏Mac and 🐧Linux

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.

Features

  • 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

Tech Stack

  • 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

Installation (NOT YET WORKING)

Windows

Winget (recommended):

winget install bluewhackadoo.RDPea

Chocolatey:

choco install rdpea

Manual: Download the latest .exe installer from Releases

macOS

Homebrew:

brew install --cask rdpea

Manual: Download the latest .dmg from Releases

Linux

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.AppImage

Debian/Ubuntu:

wget https://github.com/bluewhackadoo/RDPea/releases/latest/download/rdpea_1.0.3_amd64.deb
sudo dpkg -i rdpea_1.0.3_amd64.deb

Fedora/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.rpm

Snap:

sudo snap install rdpea

Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn
  • Windows 10/11, macOS, or Linux (no external RDP dependencies)

Install

npm install

Development

npm run dev

This starts both the Vite dev server and the Electron app with hot reload.

Build Binaries

To create distributable binaries for your platform:

npm run electron:build

This 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:

  1. Compiles TypeScript (Electron main process + RDP stack)
  2. Bundles React app with Vite
  3. Packages with electron-builder using the generated icon
  4. Creates platform-specific installers with proper code signing (if configured)

Project Structure

β”œβ”€β”€ 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

Security

  • Credentials are encrypted at rest using AES-256-GCM with a key derived via scrypt from 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

License

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.

About

Lightweight RDP Remote Desktop Client for πŸͺŸWindows, 🍏Mac and 🐧Linux

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors