Local-first podcast intelligence engine for macOS Apple Silicon.
backend/FastAPI + pipeline + SQLitefrontend/React + Vite + TypeScript UIdata/local storage (DB, audio, logs, style profiles)
- Python 3.11+
- Node.js 20+
ffmpegyt-dlp- Optional:
ollama,mlx-whisper(fallback only)
# if needed on macOS:
# brew install python@3.11
cd /Users/simon/Documents/PulsePod/backend
python3.11 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cd /Users/simon/Documents/PulsePod
cp .env.example .env
python -m podpulse.migrations
python -m podpulse.scripts.seed_feeds --file docs/feed_seed_vc_ai.json
python -m podpulse.maincd /Users/simon/Documents/PulsePod/frontend
npm install
npm run dev- Backend run:
python -m podpulse.main - Frontend dev:
npm run dev - DB migrate/init:
python -m podpulse.migrations - Seed default podcast list:
python -m podpulse.scripts.seed_feeds --file docs/feed_seed_vc_ai.json - Tests:
cd backend && pytest -q - Pipeline run once:
python -m podpulse.workers.pipeline
- API docs:
http://127.0.0.1:8000/docs - Frontend expects
VITE_API_BASE_URL(defaults tohttp://127.0.0.1:8000) - Transcription defaults to
parakeet-mlx(local Apple Silicon ASR) on Python 3.11+. - Override Parakeet model with
PARAKEET_MODELin.envif you want a different local ASR model. - Long episodes are chunked for Parakeet by default (
PARAKEET_CHUNK_DURATION_SECONDS,PARAKEET_OVERLAP_SECONDS) to avoid Metal memory errors.