Collaborative screen sharing with simultaneous remote control — like Screenhero, but open source.
- 🖥️ Real-time screen sharing — Low-latency WebRTC streaming
- 🎮 Remote control — Mouse + keyboard with explicit host approval
- 👥 Simultaneous input — Host and viewer can control at the same time
- 🔒 Secure by design — E2E encrypted, media never touches servers
- 🌐 PWA Viewer — Join sessions from any browser, installable as an app
- 💻 Cross-platform — macOS, Windows, Linux desktop apps
- 📦 Easy install — Available via Homebrew, WinGet, APT, and more
macOS
brew install --cask pairuxWindows
winget install PairUX.PairUXLinux (Debian/Ubuntu)
curl -fsSL https://pairux.com/apt/pairux.gpg | sudo gpg --dearmor -o /usr/share/keyrings/pairux.gpg
echo "deb [signed-by=/usr/share/keyrings/pairux.gpg] https://pairux.com/apt stable main" | sudo tee /etc/apt/sources.list.d/pairux.list
sudo apt update && sudo apt install pairuxLinux (Fedora)
sudo dnf config-manager --add-repo https://pairux.com/rpm/pairux.repo
sudo dnf install pairuxLinux (Arch)
yay -S pairux-binJust open the session link in any modern browser. The viewer is a Progressive Web App (PWA) — you can install it for quick access without downloading anything.
┌─────────────────┐ ┌─────────────────┐
│ Host │ │ Viewer │
│ (Desktop App) │◄────── WebRTC ──────►│ (PWA/Browser) │
│ │ P2P │ │
│ Shares screen │ │ Views screen │
│ Grants control│ │ Requests ctrl │
└─────────────────┘ └─────────────────┘
│ │
│ Auth + Signaling only │
└──────────────┬─────────────────────────┘
▼
┌─────────────────┐
│ Supabase │
│ (No media!) │
└─────────────────┘
- Host starts a session in the desktop app
- Host shares the join link with a viewer
- Viewer opens the link in their browser (or installed PWA)
- WebRTC establishes a direct P2P connection
- Viewer can request control, Host approves
- Both can control simultaneously — Host always has priority
| Feature | Description |
|---|---|
| E2E Encryption | All media encrypted via WebRTC DTLS-SRTP |
| No Server Storage | Screen data never touches our servers |
| Explicit Consent | Host must approve all control requests |
| Emergency Revoke | Ctrl+Shift+Escape instantly revokes control |
| Visual Indicators | Always shows when remote control is active |
| Code Signed | All builds are signed and notarized |
The web viewer is a Progressive Web App that can be installed on any device:
- ✅ No download required — Works in any modern browser
- ✅ Installable — Add to home screen for app-like experience
- ✅ Offline capable — Core UI works offline
- ✅ Mobile friendly — View sessions from phone/tablet
- ✅ Auto-updates — Always the latest version
- Open a session link in Chrome, Edge, or Safari
- Click "Install" in the browser menu (or address bar icon)
- Launch PairUX Viewer from your apps
| Component | Technology |
|---|---|
| Desktop App | Electron + React + nut.js |
| Web/PWA | Next.js 16.2 + Tailwind + shadcn/ui |
| Backend | Supabase (Auth, Realtime, PostgreSQL) |
| Media | WebRTC (native P2P) |
| TURN Server | coturn (self-hosted) |
| Build System | pnpm + Turborepo |
| CI/CD | GitHub Actions |
pairux/
├── apps/
│ ├── web/ # Next.js marketing site + PWA viewer
│ └── desktop/ # Electron host application
├── packages/
│ ├── shared-types/ # TypeScript type definitions
│ └── webrtc-core/ # WebRTC utilities
├── docs/ # Technical documentation
├── plans/ # Implementation plans
└── .github/workflows/ # CI/CD pipelines
- Node.js 24+
- pnpm 9+
# Clone the repo
git clone https://github.com/pairux/pairux.git
cd pairux
# Install dependencies
pnpm install
# Start development
pnpm dev| Command | Description |
|---|---|
pnpm dev |
Start all apps in development mode |
pnpm build |
Build all apps for production |
pnpm lint |
Run linting |
pnpm test |
Run tests |
pnpm --filter @pairux/web dev |
Start web app only |
pnpm --filter @pairux/desktop dev |
Start desktop app only |
| Document | Description |
|---|---|
| Architecture | System design and diagrams |
| Features | Detailed feature specifications |
| Tech Stack | Technology choices |
| WebRTC Flow | Signaling and media flow |
| Remote Control | Input injection system |
| Security | Security model |
| Distribution | Package manager publishing |
| CI/CD | GitHub Actions workflows |
| API | Database schema and API |
- Documentation and architecture
- Monorepo setup
- Marketing website
- Desktop host app
- PWA viewer
- Screen sharing
- Remote control
- Package manager distribution
- Multi-viewer support (up to 5)
- Session recording
- Chat and annotations
- File transfer
- Mobile viewer app
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License — see LICENSE for details.
- Inspired by Screenhero (RIP)
- Built with Electron, Next.js, Supabase
- UI components from shadcn/ui
PairUX — Pair programming, reimagined.