Encrypted. Local. Yours forever.
A video management application that puts you in control. Store your videos locally, encrypt them for privacy, and access them from anywhereโwithout giving up ownership of your data.
Your videos, your rules.
Most video platforms make you choose between convenience and control. Either you host everything yourself (high maintenance) or you upload to a service that controls access to your data (loss of privacy). Haven Player offers a third path:
- Local-first: Your videos live on your machine. Fast access, no bandwidth costs.
- Encrypted: Your private videos stay private. Only you (or people you authorize) can view them.
- Portable: Take your entire library with you. Restore it anywhere. Your catalog syncs across devices.
- Share without hosting: Grant access to specific people without running a public server.
Encrypt videos before they leave your machine. Only holders of the encryption key can decrypt and view the content. Even if the encrypted files are publicly accessible, they remain unreadable without authorization.
Access controls let you define who can decrypt your content:
- Only you (default)
- Specific accounts you designate
- Members of a group you define
- Holders of specific credentials
Archive videos from multiple sources through a unified interface:
| Plugin | Source Type | Use Case |
|---|---|---|
| YouTube | Video platforms | Archive channels, tutorials, livestreams |
| BitTorrent | P2P networks | Download and archive distributed content |
| WebRTC/Live | Real-time streams | Record live sessions, webinars, broadcasts |
Set rules for what to record and when. The agent monitors sources continuously and archives content matching your criteriaโautomatically, in the background.
Built-in visual language model (VLM) processing analyzes your videos:
- Automatic content tagging
- Timeline visualization of analyzed segments
- Searchable metadata
Sync your catalog across devices and restore your library from backup anywhere. Your library is kept completely private by encrypting content identifiers, ensuring zero metadata leakage.
Visual interface showing:
- Active recording operations
- Plugin health and status
- Processing queue
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ELECTRON FRONTEND โ
โ โข Dark-themed UI (Material-UI) โ
โ โข Video player with timeline visualization โ
โ โข Plugin configuration panels โ
โ โข Operations dashboard โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ FASTAPI BACKEND โ
โ โข RESTful API for video/metadata management โ
โ โข Plugin system (YouTube, BitTorrent, WebRTC, etc.) โ
โ โข AI analysis pipeline โ
โ โข Upload coordination โ
โ โข SQLite database (local) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- Python 3.12+
- Node.js 18+
- FFmpeg (optional, for better video quality)
- Deno or Node.js runtime (for YouTube downloads)
cd backend
pip install -r requirements.txt
uvicorn app.main:app --reloadAPI available at http://localhost:8000
cd frontend
npm install
npm run build
npm startFor full YouTube functionality, install a JavaScript runtime:
# macOS
brew install deno
# Linux
curl -fsSL https://deno.land/install.sh | sh
# Windows
# Download from https://deno.land/installFor age-restricted content, configure authentication cookies via the plugin settings.
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ Source โโโโโโถโ Local โโโโโโถโ Encrypted โ
โ (Plugin) โ โ Storage โ โ Backup โ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ โ
โผ โผ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ AI โ โ Access โ
โ Analysis โ โ Controls โ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
- Ingest: Plugins download or record from various sources
- Store: Videos saved to local SQLite + filesystem
- Analyze: Optional AI processing extracts metadata
- Encrypt (optional): Files encrypted with access controls
- Backup (optional): Encrypted copies stored with retrieval credentials
- Restore: Catalog metadata syncs; encrypted files retrieved on demand
Haven Player uses threshold encryption for access control:
- Encryption: Files are encrypted locally before any network operation
- Access Policies: You define who can decrypt using account lists, group membership, or credential ownership
- Decryption: Only authorized parties can reconstruct the encryption key
No centralized server ever holds the decryption key. If you lose your key, the encrypted data cannot be recoveredโjust as it should be for true data ownership.
haven-player/
โโโ backend/ # FastAPI server
โ โโโ app/
โ โ โโโ api/ # API endpoints
โ โ โโโ models/ # Database models
โ โ โโโ plugins/ # Built-in plugins (YouTube, BitTorrent, etc.)
โ โ โโโ services/ # Business logic
โ โโโ tests/
โโโ frontend/ # Electron + React app
โ โโโ src/
โ โ โโโ components/ # React components
โ โ โโโ services/ # API services, encryption
โ โ โโโ main.ts # Electron main process
โ โโโ tests/
โโโ docs/ # Architecture documentation
Backend:
cd backend
pytest --cov=app --cov-report=term-missingFrontend:
cd frontend
npm testcd backend
uvicorn app.main:app --reloadcd frontend
npm run dev- Private keys: Never commit credentials to version control
- Cookies: Authentication cookies contain sensitive dataโstore securely
- Encryption: Encrypted files without the key are unrecoverable. Back up your keys.
MIT License