Skip to content

Architecture Decision Records

Decisions that shape SlideStream, recorded so nobody has to reverse-engineer them from code. Backfilled 2026-09 from module docstrings, config comments, and the git history (the repo's visible history starts in the 2.15.x era).

ADR Title Status
0001 Provider registry with fallback chains and strict mode Accepted
0002 Layered YAML configuration with ${ENV} expansion Accepted
0003 OpenAI-compatible APIs as the default self-hosted shape Accepted
0004 gTTS and text cards are the always-available floor Superseded by 0012
0005 Privacy-first voice cloning (ephemeral, deleted after the run) Accepted
0006 Avatar render economics: one GPU clip per deck Accepted
0007 Hermetic tests; provider env vars scrubbed Accepted
0008 Dual output modes: .mp4 video and editable .pptx deck Accepted
0009 Designed decks via an external Presenton, rasterised for video Accepted
0010 SlideStream orchestrates external services through adapters Proposed
0011 A project folder holds the pipeline's state Proposed
0012 Three-level fallback; Kokoro is the voice floor Accepted
0013 Designed decks stay faithful: fidelity check and code slides Accepted
0014 Design new slides from the user's own PowerPoint template Accepted (not yet implemented)

Format

Each ADR is short: Context (the forces), Decision (what we chose), and Consequences (what that costs or enables). New ADRs get the next number and are never edited after acceptance — supersede them with a new record instead.