Simple, private video meetings. No account required.
Live at meet.iris.to | irislib.github.io/meet
- No signup - Join instantly with auto-generated identity
- End-to-end encrypted - Signaling encrypted with NIP-44
- Peer-to-peer - Direct WebRTC connections, no media server
- Decentralized - Signaling over Nostr relays
- Private - Meeting key stays in URL hash, never sent to server
- Video/audio toggle with device selection
- Screen sharing
- Text chat with link parsing
- Click-to-focus any participant
- Connection state indicators
- Keyboard shortcuts (Ctrl+D mute, Ctrl+E camera, ESC unfocus)
- Mobile responsive layout
- PWA with safe area support
- Create meeting - Generates a random secret key
- Share link - URL contains the key in the hash (e.g.,
meet.iris.to/#<secret>) - Join - Participants derive the same room pubkey from the secret
- Signal - Encrypted WebRTC signaling over Nostr (kind 25050)
- Connect - Direct P2P video/audio streams
The meeting secret never leaves the browser. Relay operators see encrypted events authored by the meeting pubkey, but cannot identify participants or decrypt content.
pnpm install # Install dependencies
pnpm run dev # Dev server at localhost:5173
pnpm run build # Production build
pnpm run test:e2e # Run Playwright tests- Svelte + TypeScript
- Nostr for decentralized signaling
- NDK for Nostr connectivity
- NIP-44 encryption
- WebRTC for peer-to-peer media
- UnoCSS for styling
- Vite for bundling
- Playwright for e2e testing
MIT