# Open Fern > Open source, model-agnostic AI video studio. Create short clips, cinematic long-form videos, podcasts, audiobooks, and ads from a single idea. Open Fern is an open-source (MIT) AI production platform that runs as a self-hosted Docker Compose stack. It is model-agnostic: users can swap AI providers for every stage of the pipeline without changing application code. ## What it does - **Short-form video** — 15–60 s animated clips generated from a text idea, with optional brand voice and music - **Long-form video** — 5–30 min image-slideshow productions with AI-written scene scripts, character consistency, and subtitle burn - **Podcast** — multi-speaker audio episodes with natural AI voices (Inworld AI, ElevenLabs, Chatterbox) - **Audiobook** — upload a PDF/TXT/EPUB; AI assigns distinct voices to every character and narrates the full text - **Ads & Branding** — asset-first brand workspace: build reusable products, recurring characters, and shot assets, then launch campaigns - **Music video** — upload an MP3; AI transcribes lyrics and generates a synced visual video - **Thumbnails & Titles** — generate 4 click-worthy thumbnail variants and title options for any production - **Trend Feed** — ingest trending topics from Google Trends, Reddit, Twitter/X, and TikTok; launch a production directly from a trend card ## Technical stack - Backend: Python 3.12, FastAPI, SQLAlchemy (SQLite default, PostgreSQL-ready), Alembic - Queue: ARQ (async task queue over Redis) - Storage: MinIO (S3-compatible, self-hosted) - Frontend: React 18, Vite, TypeScript, TanStack Query, Zustand - Deployment: Docker Compose (single VPS, ~$20/month) ## AI providers used | Stage | Providers | |---|---| | Script / LLM | Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google) | | Image generation | Gemini Flash Image, GPT-Image 1 | | Video generation | Veo 3 (via Kie.ai), Kling 3.0 (via Kie.ai) | | Voice synthesis | ElevenLabs, Inworld AI, Chatterbox, OpenAI TTS | | Music | Suno AI | ## Key design decisions - All six pipeline modules are pure async functions with typed I/O — no database access inside modules - SSE (Server-Sent Events) for real-time job progress (unidirectional, proxy-friendly) - UUID string primary keys for seamless SQLite → PostgreSQL migration - Asset storage uses canonical key schema: `brands/{id}/...`, `jobs/{id}/...` - Stage outputs are checkpointed to object storage after each successful call — partial productions resume from the last successful stage ## License MIT. Source available on GitHub. ## Pages - [Landing page](https://openfern.ai/) - [Technical Whitepaper](https://openfern.ai/whitepaper)