Break free from Big Tech. PAVO is a fully open source personal cloud platform that puts you in complete control of your data - know exactly where it lives, import and export freely, and never worry about your privacy being sold.
- Your data never leaves your control - No tracking, no data mining, no surveillance
- Full export capabilities - Download everything, anytime
- Self-hosted by default - Run on your own infrastructure
- Open source transparency - Inspect every line of code
- πΈ Photos - Store memories without giving them away
- π΅ Music - Stream without algorithms or ads
- π¬ Movies & TV - Watch without surveillance
- π Documents - Files that stay truly private
- π Dark/Light Mode - Beautiful interface that adapts to your preference
- π± Mobile Ready - Works perfectly on all devices
- π Secure Authentication - Built with Clerk
- β‘ Smart Caching - Optimized performance
- π οΈ Modern Stack - Next.js 15, TypeScript, Tailwind CSS v4
PAVO is a unified interface that brings together the best self-hosted services. We're grateful to these incredible projects:
- Immich (AGPL-3.0) - Self-hosted photo and video backup solution with AI-powered features
- Jellyfin (GPL-2.0) - The volunteer-built media server that puts you in control of your media
- Paperless-ngx (GPL-3.0) - Scan, index, and archive your physical documents
PAVO creates a beautiful, unified dashboard while preserving the full power and flexibility of these excellent services. All credit for the core functionality goes to these amazing development teams.
- Node.js 18+ and npm
- Running instances of:
- Immich server
- Paperless-ngx server
- Jellyfin server
- API keys/tokens for each service
- Clerk account for authentication
Get started instantly with our managed service:
- β Zero setup required
- β Automatic updates and backups
- β Mobile apps included
- β 14-day free trial
- Clone the repository:
git clone https://github.com/chbornman/pavo.git
cd pavo- Install dependencies:
npm install- Configure environment variables:
cp .env.example .env.local- Edit
.env.localwith your service URLs and API keys:
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
# Immich Configuration
NEXT_PUBLIC_IMMICH_URL=https://immich.yourdomain.com
IMMICH_API_KEY=your_immich_api_key
# Paperless-ngx Configuration
NEXT_PUBLIC_PAPERLESS_URL=https://paperless.yourdomain.com
PAPERLESS_API_TOKEN=your_paperless_token
# Jellyfin Configuration
NEXT_PUBLIC_JELLYFIN_URL=https://jellyfin.yourdomain.com
JELLYFIN_API_KEY=your_jellyfin_api_key
JELLYFIN_USER_ID=your_jellyfin_user_idRun the development server:
npm run devOpen http://localhost:3000 to view the dashboard.
Build for production:
npm run build
npm run start- Ensure your user has access to the Music library in Jellyfin
- Go to Jellyfin Admin β Users β Your User β Library Access
- Enable access to Movies, Shows, and Music libraries
- Generate an API key from Immich web interface
- Go to User Settings β API Keys β Generate New Key
- Generate an authentication token
- Go to Settings β Token Authentication β Create Token
- Framework: Next.js 15.5 with App Router
- Language: TypeScript
- Styling: Tailwind CSS v4 with OKLCH colors
- Authentication: Clerk
- Fonts: Space Grotesk & JetBrains Mono
/app
/api # API routes for proxying service requests
/components # React components
/hooks # Custom React hooks
/lib # Utility functions and API clients
page.tsx # Main dashboard page
layout.tsx # Root layout with authentication
globals.css # Global styles and theme variables
Contributions are welcome! Please feel free to submit a Pull Request.
PAVO is licensed under the GNU Affero General Public License v3.0.
This ensures that:
- β You can use, modify, and distribute PAVO freely
- β Any improvements remain open source and benefit the community
- β Network copyleft protects against proprietary cloud services using our code without contributing back
- β Commercial use is allowed with proper attribution and source code sharing
For the complete license terms, see LICENSE.md.
- Built with love for the self-hosting and privacy community
- Inspired by the need for a unified, privacy-respecting media dashboard
- Immense gratitude to the teams behind Immich, Jellyfin, and Paperless-ngx for creating the incredible services that power PAVO
- Special thanks to everyone fighting for digital privacy and data ownership