Content in. Private podcasts out.
Turn multi-source content into private shows you can finish. Persona, voice, plugins, MCP — self-hosted.
English · 简体中文
Demo · Docs · Product Hunt · Get started · UI · Features · Disclaimer
BokeBox turns “I’ll read/watch it later” into private episodes you can actually finish — and keep.
| You put in | You get back |
|---|---|
| Video / links / drafts / meetings & courses | Spoken episode + cover + flashcards + progress |
| Global or per-episode persona / voice | Feels like a show made for you |
| Plugins / MCP / schedules | Extensible inputs, AI-native control |
One line: a self-hosted private AI podcast studio — your data stays local, the pipeline is pluggable, listening quality beats feature bloat.
Try it now
- Demo: https://bokebox.aiuo.net
- Docs: https://bkb-docs.aiuo.net
- Local in three steps:
git clone https://github.com/vastsa/BokeBox.git
cd bokebox
cp .env.example .env # add API keys
./start.sh # http://localhost:5173Docker (recommended prebuilt image):
cp .env.example .env
docker pull ghcr.io/vastsa/bokebox:latest
./start.sh docker # http://localhost:8787 What you put in What BokeBox gives back
───────────────── ──────────────────────
Meetings / notes Rhythmic spoken episodes
Long reads / talks / courses Host persona + natural voice
Any link (plugin-extensible) Cover · flashcards · progress
- Drop it in — video, link, draft, or plugin sources
- Tune optionally — persona, voice, prompts
- Let it run — ASR → spoken script → TTS → cover / cards
- Listen — player + albums + star map + review
| Pain | What BokeBox does |
|---|---|
| Endless “read later” | Moves content into ear time |
| Robot read-aloud | Rewrites into spoken structure with persona |
| Heard and forgotten | Auto flashcards for key points |
| Locked-in inputs | Source / ASR / TTS / Schedule plugins |
| Cloud lock-in | Single-user self-host; jobs & media stay local |
Good fit: knowledge workers, commute listeners, private “shows for myself”, privacy-minded self-hosters.
Not a fit: public podcast platforms, multi-tenant SaaS, live collaborative editing.
Create, listen, and manage assets in one private space.
| Home | Player |
|---|---|
![]() |
![]() |
| Flashcards | Star Map |
![]() |
![]() |
| Persona | Prompts |
|---|---|
![]() |
![]() |
| Plugins | MCP |
![]() |
![]() |
| Schedules | Site |
![]() |
![]() |
Expand full checklist (pipeline / listening / plugins / MCP / deploy)
- Local upload: video / audio / draft
- URL import: article body, public media links
- Pin a Source plugin or auto-match; assign album, persona, voice on create
- Extract → ASR → spoken script → cover / notes / flashcards → TTS
- Async jobs with home progress; re-run from a chosen step and skip finished stages
- Publish to library, retry failures, delete jobs
- Global host persona + per-episode override
- Preset voices + text-described voice design
- Prompt hub: cover / spoken / rewrite / flashcards with
{{placeholders}} - Content language: global default or per job
- Job detail: transcript, script, notes, flashcards, cover, audio
- Player: progress memory, speed, sleep timer (incl. end of episode)
- Albums for continuous play; Star Map by tags
- Voice / Persona / Prompts / AI service / Plugins / Schedules / MCP / Site / Account
- Account: UI language (system / zh / en) + theme (system / light / dark)
- Schedule plugins discover candidates; Source plugins fetch/parse
- Built-ins: RSS, URL list, GitHub Trending, Hacker News, …
- Dedup, rate limits, run now / force, run history
- Guide: docs/guide/schedule.md
- Shared Source / ASR / TTS / Schedule contracts; rescan / zip upload / enable in Settings
- Docs & examples: docs/plugins/ · docs/development/ · examples/
- Built-in
POST /mcpwith auto long-lived token - Copy Cursor / Claude / Codex install configs from Settings
- Tools include
create_podcast_from_url/create_podcast_from_text/list_jobs/get_job/ schedule tools, … - Optional
PUBLIC_BASE_URLfor reverse-proxy install URLs
Cursor example:
{
"mcpServers": {
"bokebox": {
"url": "http://localhost:8787/mcp",
"headers": {
"Authorization": "Bearer <token from Settings>"
}
}
}
}./start.shdev ·./start.sh prodsingle port · Docker prebuilt / local / China mirrors- Single-user self-host: SQLite + local storage
- License: LGPL-3.0 · repo: https://github.com/vastsa/BokeBox
git clone https://github.com/vastsa/BokeBox.git
cd bokebox
cp .env.example .env # add your API keys
./start.sh # http://localhost:5173First launch walks through account setup and model config.
| Mode | Command | Open |
|---|---|---|
| Local dev | ./start.sh |
http://localhost:5173 |
| Single-port prod | ./start.sh prod |
see script output |
| Docker prebuilt | docker pull ghcr.io/vastsa/bokebox:latest && ./start.sh docker |
http://localhost:8787 |
| Docker local build | ./start.sh docker.local |
http://localhost:8787 |
| China mirrors build | ./start.sh docker.cn |
http://localhost:8787 |
| Entry | URL |
|---|---|
| Online docs (EN/ZH) | https://bkb-docs.aiuo.net |
| Demo | https://bokebox.aiuo.net |
| In-repo docs | docs/ (VitePress) |
| Plugins / developer guides | docs/plugins/ · docs/development/ |
| CI / images | docs/ops/ci-cd.md |
pnpm docs:dev
pnpm docs:build
pnpm docs:preview- Better multi-episode / continue-listening flows
- Richer voices and providers
- Subscription export (e.g. RSS) into apps you already use
- Lighter one-click desktop packaging
If that resonates:
- ⭐ Star the repo
- Open an Issue — what should be “podcast-ified”?
- PRs welcome — UX, copy, voices & model adapters especially
Shareable one-liner: BokeBox turns videos, links, articles, meetings, and courses into private podcasts. Customize persona and voice, with MCP and pluggable sources. Self-hosted — your data stays under your control.
Content in. Private podcasts out. Most tools help you produce content faster; BokeBox helps you digest it better.
Appendix: requirements · commands · config · stack
- Node.js ≥ 22.5 · pnpm 9.x
- OpenAI-compatible API (Chat / ASR / TTS; image model optional)
| Command | Description |
|---|---|
./start.sh |
Local dev (web 5173 + API 8787) |
./start.sh prod |
Build and run on a single port |
./start.sh docker |
Pull ghcr.io/vastsa/bokebox:latest and start |
./start.sh docker.local |
Build from local Dockerfile and start |
./start.sh docker.cn |
Build with China mirrors and start |
./start.sh docker:down |
Stop containers |
OPENAI_API_KEY=sk-your-key
OPENAI_BASE_URL=https://api.example.com/v1
OPENAI_CHAT_MODEL=mimo-v2.5
OPENAI_TRANSCRIBE_MODEL=mimo-v2.5-asr
OPENAI_TTS_MODEL=mimo-v2.5-tts
OPENAI_TTS_DEFAULT_VOICE=冰糖Full variables: .env.example.
multi-source input (video / link / draft / plugins)
→ normalize → ASR/understanding → spoken script
→ parallel: cover / flashcards / TTS → library
React · Vite · Fastify · SQLite · ffmpeg · pnpm monorepo
LGPL-3.0 — open source; derivative works of the library must remain LGPL-compatible. Repo: https://github.com/vastsa/BokeBox
This project is provided “AS IS”, for learning, research, and technical exchange only. The authors and contributors make no warranties, express or implied, including but not limited to merchantability, fitness for a particular purpose, non-infringement, accuracy, availability, or continued availability.
By using, deploying, modifying, or distributing this project (including derivatives and third-party plugins), you acknowledge and agree that:
-
Compliance is your responsibility
You must comply with all applicable laws and regulations in your jurisdiction(s), including copyright and related rights, personal data / privacy, cybersecurity, generative-AI rules, trade secrets, platform terms of service, and export controls. -
Content rights are on you
You alone must ensure that materials you ingest, scrape, transcribe, rewrite, synthesize, store, or distribute are lawfully authorized or otherwise permitted. Do not use this project for infringement, circumvention of technical protection measures, unauthorized access, fraud, harassment, or other unlawful purposes. -
Risks stay with the operator
To the maximum extent permitted by law, the authors and contributors are not liable for any direct, indirect, incidental, special, punitive, or consequential damages (including data loss, downtime, account bans, third-party claims, or administrative penalties) arising from use of this project. Enabling plugins, MCP, schedules, guest access, reverse proxies, or public exposure is at your own risk. -
Third-party services & dependencies
Model APIs, TTS/ASR providers, fetch-style plugins, container images, and other third-party components have their own terms and billing. Their availability, cost, safety policies, and compliance duties are outside this project’s responsibility. -
Demo & docs
The demo instance and documentation examples are for illustration only and are not a product commitment, professional advice, or implied license. Do not put real secrets, private data, or protected content into the demo environment. -
Open-source license
Software licensing is governed by the root LICENSE (LGPL-3.0-only). This disclaimer supplements risk notice and liability boundaries and does not alter rights or obligations under LGPL. If any part conflicts with mandatory law, that part yields to the law and the remainder continues in effect.
If you do not agree, do not download, install, use, or distribute this project.
BokeBox
Private AI podcast box · Open Source · LGPL-3.0
github.com/vastsa/BokeBox











