A decentralized media player and podcast platform built on the Internet Computer. Rivet enables censorship-resistant audio and video sharing for artists, podcasters, and groups, inspired by the peer-to-peer spirit of Napster.
Rivet provides a platform where:
- Artists can share music without fear of censorship or regional restrictions
- Podcasters can host RSS feeds with permanent, decentralized storage
- Users can upload and share audio/video files with friends or private groups
- Private groups can share media accessible only to members (China-accessible, unlike YouTube)
- Content creators maintain control over their work through decentralized infrastructure
Users create personal "Theaters" - dedicated canisters that store their media content. Like AWS S3 buckets, but on the Internet Computer. Each Theater contains thematically related content (album, podcast series, video collection) and generates its own RSS feed.
- Public: Discoverable by anyone, indexed in search
- Unlisted: Secret link access (like YouTube unlisted)
- Private: Invite-only access, requires login
- Listener: Anonymous users who can discover and play public content
- Member: Registered users (via id.ai) who can like, follow, bookmark, and access private Theaters
- Curator: Members who own Theaters and upload content
- No Account Required: Anyone can discover and stream public content
- Audio Format Support: MP3, M4A, FLAC, OGG, WAV
- Video Format Support: MP4, MKV, WebM (max 500MB per file)
- In-Browser Playback: No app download required
- HTTP Streaming: Range request support for seeking
- Follow Curators: Get notified of new uploads
- Like Tracks: Build your personal collection
- Bookmark Theaters: Quick access to favorites
- Playlists: Create custom collections (future)
- Personal Theaters: Create your own media vault
- Easy Upload: Drag-and-drop audio/video files
- 7-Day Free Tier: Upload free for 7 days, pay to persist
- Podcast RSS: Auto-generated feeds for podcast apps
- Social Sharing: Share media on Twitter, Facebook, etc.
- SEO Friendly: Google-indexable media pages
- Decentralized: No single point of control
- User-Funded: Creators pay for their own storage cycles
- Permanent URLs: Content-addressed on Internet Computer
- Regional Freedom: Accessible globally, including from China
- Backend: Motoko on Internet Computer
- Storage: IC Stable Memory & Theater Canisters
- Identity: DFINITY id.ai (passwordless authentication)
- Frontend: React/Svelte/Vue (TBD) + Asset Canister
- Landing Page: inturious.com (Web2 entry point)
Rivet uses a multi-canister architecture for scalability and user ownership:
- Frontend Canister: Player UI, discovery interface, Theater management
- Backend Canister: User management, Theater registry, social graph, discovery engine
- Theater Canisters: User-owned canisters for media storage (dynamically created)
- Each Curator can create multiple Theaters
- Each Theater is a separate canister with its own cycle balance
- Theaters serve audio/video via HTTP and generate RSS feeds
For detailed architecture documentation, see:
- docs/ARCHITECTURE.md - Complete system design
- docs/CANISTER_INTERACTIONS.md - Canister communication patterns
# Clone the repository
git clone https://github.com/Inturious-Labs/rivet.git
cd rivet
# Install dependencies (when available)
npm install# Start the IC replica in the background
dfx start --background
# Deploy canisters to local replica
dfx deploy
# Check canister status
dfx canister status rivet_backend# Run unit tests (when available)
npm test
# Run integration tests
dfx canister call rivet_backend greet '("Rivet")'This project is in early development. Current phase: Initial scaffolding and architecture design.
Contributions are welcome! Please feel free to submit issues and pull requests.
MIT License (TBD)
Inspired by the peer-to-peer music sharing revolution and the vision of a decentralized internet.