Overview
Discover what makes PinePods powerful
PinePods is a **full‑stack Rust** application that delivers podcast management, playback, and synchronization across devices. The backend is a high‑performance Actix‑web service that exposes RESTful endpoints and WebSocket streams for real‑time state updates. The frontend is a WebAssembly (WASM) bundle built with Yew, which runs natively in the browser and provides a native‑app feel without sacrificing speed. The architecture is intentionally minimal: a single binary that can be containerized or compiled for ARM/Raspberry‑Pi, and a relational database (MySQL, MariaDB, or PostgreSQL) that holds all user data, podcast metadata, and playback state.
Multi‑user management
Universal sync
Podcast discovery
Episode handling
Overview
PinePods is a full‑stack Rust application that delivers podcast management, playback, and synchronization across devices. The backend is a high‑performance Actix‑web service that exposes RESTful endpoints and WebSocket streams for real‑time state updates. The frontend is a WebAssembly (WASM) bundle built with Yew, which runs natively in the browser and provides a native‑app feel without sacrificing speed. The architecture is intentionally minimal: a single binary that can be containerized or compiled for ARM/Raspberry‑Pi, and a relational database (MySQL, MariaDB, or PostgreSQL) that holds all user data, podcast metadata, and playback state.
Technical Stack
| Layer | Technology |
|---|---|
| Language | Rust (2021 edition) |
| Web Framework | Actix‑web + actix‑ws for HTTP & WebSocket |
| Frontend | Yew (WASM) with wasm‑cloud for bundling |
| Database | SQLx‑enabled MySQL/MariaDB/PostgreSQL |
| Search | Optional external API (Podcast Index or iTunes) exposed via a pluggable search trait |
| Containerization | Official Docker images built from multi‑stage Dockerfiles; Helm chart available for Kubernetes |
| gPodder Support | Built‑in lightweight HTTP server that implements the gpodder API, with optional passthrough to external gpodder services |
The codebase follows a clean domain‑driven design: entities such as Podcast, Episode, and User are defined in a shared library, while the web service layer handles request routing, authentication (JWT), and background jobs for episode downloads. A lightweight task queue built on top of Tokio’s async runtime schedules download workers and sync jobs, ensuring the server remains responsive even under heavy media traffic.
Core Capabilities
- Multi‑user management: Role‑based access, per‑user subscription lists, and isolated playback state.
- Universal sync: Playback position, episode downloads, theme preferences, and smart playlists are stored server‑side and streamed to clients via WebSockets.
- Podcast discovery: Integrated search against the Podcast Index and iTunes APIs, with a pluggable caching layer to reduce external calls.
- Episode handling: Download, delete, and streaming of MP3/OPUS files via HTTP range requests.
- gPodder API: Full compatibility with AntennaPod, gpodder‑desktop, and other clients; can be toggled on/off per user.
- YouTube audio extraction: Subscribing to YouTube channels automatically creates “podcast‑style” feeds with audio‑only MP3s.
- Smart playlists: Declarative filters (e.g., “unplayed in last 30 days”) that sync across all devices.
Developers can extend functionality through the exposed REST API, which follows OpenAPI 3.0 specifications. The API surface includes endpoints for CRUD operations on podcasts, episodes, users, and playlists, as well as webhook hooks for external services (e.g., Slack notifications on new episode download).
Deployment & Infrastructure
PinePods is designed for self‑hosting on any Linux platform, from a Raspberry Pi to a production Kubernetes cluster. The Docker image contains the binary and a minimal Alpine runtime, keeping layers small (<200 MB). For Kubernetes, a Helm chart bundles the deployment with configurable resource requests/limits, persistent volume claims for media storage, and optional Ingress rules. The application is stateless except for the database and media files, which simplifies scaling: additional replicas can be spun up behind a load balancer without session stickiness.
Key deployment considerations:
- Database: Requires an existing MySQL/MariaDB/PostgreSQL instance. The schema is auto‑applied via Diesel migrations on startup.
- Media storage: Configurable mount path; can be a local disk, NFS share, or cloud object storage (via an S3‑compatible endpoint).
- Reverse proxy: HTTPS termination is recommended; the app accepts
X‑Forwardedheaders for correct host resolution. - Resource limits: A single replica comfortably handles 50–100 concurrent users with moderate download traffic; CPU‑bound tasks are offloaded to a Tokio thread pool.
Integration & Extensibility
The architecture encourages plug‑in development:
- Search providers: Implement the
search::Providertrait to swap between Podcast Index, iTunes, or a custom index. - External sync: The gPodder API can be routed to third‑party services; developers can expose additional endpoints for custom clients.
- Webhooks: Subscribe to events such as
episode_downloadedorpodcast_subscribedvia the built‑in webhook system. - Theme engine: Themes are served as static assets; developers can add new CSS/JS bundles and register them in the UI settings.
Documentation is available on the official site, with a comprehensive API reference and example webhook payloads. The community maintains a Discord channel for real‑time support, and the GitHub repo encourages pull requests for new features.
Use Cases
| Scenario | Why PinePods? |
|---|---|
| Home media server | Runs on a Raspberry Pi, syncs across all family devices with minimal setup. |
| Enterprise podcast platform | Multi‑tenant support, LDAP integration possible via JWT middleware; can be |
Open SourceReady to get started?
Join the community and start self-hosting PinePods today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Joplin
Secure, offline-first note-taking with markdown and end-to-end sync
Seatsurfing
Book desks, seats, and rooms from any device

GarageHQ
Distributed object storage for self-hosted resilience
StackStorm
Event‑driven automation for modern infrastructure
MintHCM
Open-source Human Capital Management for modern teams
Gatus
Developer‑oriented health dashboard for services
