A Self-Hosted Podcast Generator with Zero Servers to Maintain

Every consumer 'AI podcast' app that paid for its users' TTS has shut down — Recast, PlayNote, Huxe. The architecture that survives is the one where the pipeline is yours: open source, running on your own free-tier accounts, with no burn rate to kill it.

Architecture: batch pipeline → object storage → static player

There is deliberately no backend. A scheduled job (GitHub Actions or cron) fetches your sources, rewrites them with an LLM, synthesizes audio, and uploads everything to object storage. The storage bucket serves a standard podcast RSS feed and a static PWA player. The only dynamic code is a tiny serverless function that writes your settings.

Deploy with one command

Fill two Cloudflare values in .env, then npm run setup creates the bucket, enables the public domain, generates an admin token, deploys the player, and prints your podcast feed URL. The whole thing is idempotent — rerun it anytime.

Day-2 operations happen in the player

After setup you shouldn't need a terminal: the player's settings page adds/removes feeds, queues single articles, and accepts ebook uploads (which start converting within minutes). Your phone is the admin console.

listenwhilerunning is open source (AGPL-3.0) and runs on your own free-tier accounts.

Get it on GitHub → Live demo Hosted version waitlist

FAQ

Do I need a VPS?

No. GitHub Actions can run the daily pipeline for free. A VPS only adds faster 'upload → listening' latency via a polling timer (minutes instead of next-day).

What are the actual monthly costs?

Storage and bandwidth: $0 on free tiers. LLM: a few cents per day, optional. TTS: free for personal use, swappable for a paid provider if you need commercial rights.

Why AGPL?

So improvements to hosted deployments flow back to the community. For personal self-hosting AGPL imposes nothing on you.