An open API service indexing awesome lists of open source software.

https://github.com/profullstack/pairux.com

Collaborative screen sharing with simultaneous remote control โ€” like Screenhero, but open source.
https://github.com/profullstack/pairux.com

jitsi meet p2p screenhero screensharing teams webex webrtc zoom

Last synced: 6 days ago
JSON representation

Collaborative screen sharing with simultaneous remote control โ€” like Screenhero, but open source.

Awesome Lists containing this project

README

          


PairUX Logo

PairUX


Collaborative screen sharing with simultaneous remote control

Like Screenhero, but open source.

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)

---

## โœจ Features

- ๐Ÿ–ฅ๏ธ **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

---

## ๐Ÿš€ Quick Start

### Install the Desktop App (Host)

macOS

**Homebrew** (Recommended)

```bash
brew tap profullstack/homebrew-pairux
brew install --cask pairux
```

**Direct Download**

- [PairUX-x.x.x-arm64.dmg](https://github.com/profullstack/pairux.com/releases/latest) (Apple Silicon)
- [PairUX-x.x.x-x64.dmg](https://github.com/profullstack/pairux.com/releases/latest) (Intel)

Windows

**WinGet** (Recommended)

```powershell
winget install PairUX.PairUX
```

**Scoop**

```powershell
scoop bucket add pairux https://github.com/profullstack/scoop-pairux
scoop install pairux
```

**Chocolatey**

```powershell
choco install pairux
```

**Direct Download**

- [PairUX-x.x.x-x64.exe](https://github.com/profullstack/pairux.com/releases/latest)

Linux (Debian/Ubuntu)

**APT Repository** (Recommended)

```bash
# Add GPG key
curl -fsSL https://profullstack.github.io/pairux-apt/pairux.gpg | sudo gpg --dearmor -o /usr/share/keyrings/pairux.gpg

# Add repository
echo "deb [signed-by=/usr/share/keyrings/pairux.gpg] https://profullstack.github.io/pairux-apt stable main" | sudo tee /etc/apt/sources.list.d/pairux.list

# Install
sudo apt update && sudo apt install pairux
```

**Direct Download**

- [pairux_x.x.x_amd64.deb](https://github.com/profullstack/pairux.com/releases/latest)

Linux (Fedora/RHEL/CentOS)

**RPM Repository** (Recommended)

```bash
# Add repository
sudo dnf config-manager --add-repo https://profullstack.github.io/pairux-rpm/pairux.repo

# Import GPG key
sudo rpm --import https://profullstack.github.io/pairux-rpm/RPM-GPG-KEY-pairux

# Install
sudo dnf install pairux
```

**Direct Download**

- [pairux-x.x.x-1.x86_64.rpm](https://github.com/profullstack/pairux.com/releases/latest)

Linux (Arch)

**AUR** (Recommended)

```bash
# Using yay
yay -S pairux-bin

# Using paru
paru -S pairux-bin

# Manual
git clone https://aur.archlinux.org/pairux-bin.git
cd pairux-bin
makepkg -si
```

Linux (Gentoo)

**Custom Overlay**

```bash
# Add overlay
sudo eselect repository add pairux git https://github.com/profullstack/gentoo-pairux.git
sudo emaint sync -r pairux

# Install
sudo emerge net-misc/pairux-bin
```

Linux (NixOS/Nix)

**Flake** (Recommended)

```bash
nix profile install github:profullstack/pairux-nix
```

**nix-shell**

```bash
nix-shell -p pairux
```

Linux (Universal)

**AppImage**

```bash
# Download
wget https://github.com/profullstack/pairux.com/releases/latest/download/PairUX-x.x.x-x86_64.AppImage

# Make executable
chmod +x PairUX-*.AppImage

# Run
./PairUX-*.AppImage
```

### Join as a Viewer (No Install Required!)

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

---

## ๐ŸŽฏ How It Works

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Host โ”‚ โ”‚ Viewer โ”‚
โ”‚ (Desktop App) โ”‚โ—„โ”€โ”€โ”€โ”€โ”€โ”€ WebRTC โ”€โ”€โ”€โ”€โ”€โ”€โ–บโ”‚ (PWA/Browser) โ”‚
โ”‚ โ”‚ P2P โ”‚ โ”‚
โ”‚ Shares screen โ”‚ โ”‚ Views screen โ”‚
โ”‚ Grants controlโ”‚ โ”‚ Requests ctrl โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚ โ”‚
โ”‚ Auth + Signaling only โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Supabase โ”‚
โ”‚ (No media!) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

1. **Host** starts a session in the desktop app
2. **Host** shares the join link with a viewer
3. **Viewer** opens the link in their browser (or installed PWA)
4. **WebRTC** establishes a direct P2P connection
5. **Viewer** can request control, **Host** approves
6. Both can control simultaneously โ€” **Host always has priority**

---

## ๐Ÿ” Security

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

---

## ๐Ÿ“ฑ PWA Viewer

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

### Install the PWA

1. Open a session link in Chrome, Edge, or Safari
2. Click "Install" in the browser menu (or address bar icon)
3. Launch PairUX Viewer from your apps

---

## ๐Ÿ› ๏ธ Tech Stack

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

---

## ๐Ÿ“ Project Structure

```
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
```

---

## ๐Ÿง‘โ€๐Ÿ’ป Development

### Prerequisites

- Node.js 24+
- pnpm 9+

### Setup

```bash
# Clone the repo
git clone https://github.com/profullstack/pairux.com.git
cd pairux

# Install dependencies
pnpm install

# Start development
pnpm dev
```

### Commands

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

---

## ๐Ÿ“– Documentation

| Document | Description |
| ---------------------------------------- | ------------------------------- |
| [Architecture](docs/ARCHITECTURE.md) | System design and diagrams |
| [Features](docs/FEATURES.md) | Detailed feature specifications |
| [Tech Stack](docs/TECH-STACK.md) | Technology choices |
| [WebRTC Flow](docs/WEBRTC-FLOW.md) | Signaling and media flow |
| [Remote Control](docs/REMOTE-CONTROL.md) | Input injection system |
| [Security](docs/SECURITY.md) | Security model |
| [Distribution](docs/DISTRIBUTION.md) | Package manager publishing |
| [CI/CD](docs/CI-CD.md) | GitHub Actions workflows |
| [API](docs/API.md) | Database schema and API |

---

## ๐Ÿ—บ๏ธ Roadmap

### MVP (v1.0)

- [x] Documentation and architecture
- [x] Monorepo setup
- [x] Marketing website
- [x] Desktop host app
- [x] PWA viewer
- [x] Screen sharing
- [x] Remote control
- [x] Package manager distribution
- [x] Multi-viewer support (up to 5 for p2p, 100k for SFU)
- [x] Session recording
- [x] Chat and annotations

### Future

- [ ] File transfer
- [ ] Mobile viewer app

---

## ๐Ÿค Contributing

We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Submit a pull request

---

## ๐Ÿ“„ License

MIT License โ€” see [LICENSE](LICENSE) for details.

---

## ๐Ÿ™ Acknowledgments

- Inspired by [Screenhero](https://screenhero.com) (RIP)
- Built with [Electron](https://electronjs.org), [Next.js](https://nextjs.org), [Supabase](https://supabase.com)
- UI components from [shadcn/ui](https://ui.shadcn.com)

---


PairUX โ€” Pair programming, reimagined.