Secure P2P Platform — Files, Secret, Screen, Watch, Call, Collab
Platform | Documentation | API | Community
Rapidly is an open-source P2P platform. Everything runs directly between browsers over WebRTC — no Rapidly server ever sees your data, and every session is end-to-end encrypted.
- Files — encrypted P2P file transfer with no size limits, expiring links, and download quotas
- Secret — one-time-view encrypted text: API keys, credentials, tokens
- Screen — peer-to-peer screen share with no video ever relayed through a server
- Watch — synchronised video watch parties; host clock, drift bands, peer-to-peer
- Call — E2E-encrypted voice and video for 1:1 and small groups
- Collab — real-time documents + whiteboards, Yjs CRDT over the P2P data channel
Plus: Stripe Connect payments on top of Files, organisation-level controls, customer portals, and webhook delivery.
| Traditional tools | Rapidly | |
|---|---|---|
| File sharing | Upload → paste link → hope for the best | P2P in your browser: AES-256 encrypted, no server storage, expiring links, download quotas |
| Sharing secrets | Slack DM / email (!) | Encrypted, one-time-view links with audit trail |
| Screen / video call | Install a desktop app; stream relayed | Pure P2P in the browser; DTLS + TURN fallback |
| Collaborative editing | SaaS with server-side doc storage | Yjs CRDT over P2P, end-to-end encrypted, nothing on our servers |
- Python 3.14+ and uv
- Node.js 24+ and pnpm
- Docker
# 1. Clone and configure
git clone https://github.com/rapidly-tech/rapidly.git
cd rapidly
./dev/setup-environment
# 2. Start infrastructure (Postgres, Redis, Minio)
cd server
docker compose up -d
# 3. Backend API (http://127.0.0.1:8000)
uv sync
uv run task db_migrate
uv run task api
# 4. Frontend (http://127.0.0.1:3000) : in a new terminal
cd clients
pnpm install
pnpm devTip: For a fully containerised setup with hot-reload, run
dev docker upfrom the repo root. SeeDEVELOPMENT.mdfor details.
Rapidly is a monorepo with a Python/FastAPI backend and a Next.js frontend, connected by a generated TypeScript API client.
rapidly/
├── server/ # Python backend
│ ├── rapidly/ # Application modules
│ │ ├── file_sharing/ # File sharing & WebRTC signalling
│ │ ├── storefront/ # Public share pages
│ │ ├── auth/ # Authentication (OAuth, magic links)
│ │ ├── organization/ # Multi-tenant organisation layer
│ │ └── ... # Products, webhooks, notifications, etc.
│ ├── migrations/ # Alembic database migrations
│ └── docker-compose.yml # Dev infrastructure
├── clients/
│ ├── apps/web/ # Next.js dashboard & public pages
│ └── packages/
│ ├── ui/ # Shared component library (Tailwind)
│ ├── client/ # Generated API client
│ └── customer-portal/ # Embeddable customer portal SDK
└── dev/ # Developer tooling & scripts
| Layer | Stack |
|---|---|
| API | FastAPI, SQLAlchemy, Pydantic, Dramatiq (workers) |
| Database | PostgreSQL 16, Redis |
| Storage | Cloudflare R2 (S3-compatible, Minio locally) with ClamAV scanning |
| Frontend | Next.js 15, TypeScript, TanStack Query, Tailwind CSS |
| Payments | Stripe Connect |
| Real-time | WebRTC (peer-to-peer file transfers), Server-Sent Events |
- Free for file sharing and secret exchange
- 2 % platform fee on paid shares (via Stripe): no monthly costs
- See the fee schedule for full details
We welcome contributions of all kinds: bug reports, feature requests, docs improvements, and code.
- Read
DEVELOPMENT.mdfor environment setup - Check open issues or propose a new one
- Fork, branch, and open a pull request
Found a vulnerability? Please disclose it responsibly: see SECURITY.md.
- Reddit: questions, ideas, and chat
- GitHub Discussions: longer-form conversations
- X: announcements
Licensed under the Apache License 2.0.