This document explains how to set up the project for development, local rendering, and desktop packaging.
- Windows, macOS, or Linux
- Node.js 18 or newer
- npm
- Python 3.8 or newer for development voice generation
- 8 GB RAM minimum, 16 GB recommended for larger renders
- Enough free disk space for cached assets, rendered segments, and output videos
The project now supports four main runtime entrypoints that share one application core:
- Browser portal and HTTP API with
npm run dev - CLI generation with
npm run generate - MCP server with
npm run mcp - Windows desktop packaging with Electron
Current executable entry files:
src/server.tssrc/cli.tssrc/mcp-server.tselectron/electron-main.ts
For the architectural layout behind these entrypoints, see ARCHITECTURE.md.
Voice generation now follows this order when possible:
Edge-TTS- Windows offline speech fallback in packaged desktop mode
- Google TTS fallback when available
Install Node.js from nodejs.org.
Verify:
node -v
npm -vnpm installWindows:
py -m pip install -r requirements.txtIf py is unavailable:
python -m pip install -r requirements.txtmacOS or Linux:
python3 -m pip install -r requirements.txtThis installs the edge-tts runtime used during normal development.
The project prefers bundled ffmpeg-static and ffprobe-static, so many machines do not need a global FFmpeg install.
A system FFmpeg install is still useful as a fallback.
Verify if you have a global install:
ffmpeg -versionCopy .env.example to .env.
Windows PowerShell:
Copy-Item .env.example .envmacOS or Linux:
cp .env.example .envSet at least:
PEXELS_API_KEY=your_key_here
PIXABAY_API_KEY=
GEMINI_API_KEY=
PUBLIC_BASE_URL=
PORT=3001
VIDEO_ORIENTATION=portrait
VIDEO_VOICE=en-US-GuyNeuralPEXELS_API_KEY is the main required key for the standard browser workflow.
npm run devOpen:
http://localhost:3001/
Create or update input/input-scripts.json, then run:
npm run generatenpm run mcpUse this runtime when connecting Claude Desktop, Claude Code, or other MCP clients.
npm run remotion:studionpx tsc -p tsconfig.json --noEmitcmd /c node_modules\.bin\tsc.cmd -p tsconfig.electron.json --noEmitnpm run electron:verify-bundlenpm run electron:verify-releaseStart the portal and open:
http://localhost:3001/health
The health response helps verify:
- voice engine readiness
- FFmpeg availability
- Python runtime availability
- Node module availability
The Electron setup window is not just informational anymore.
Launch Appexplicitly starts the backend and opens the portalSkipalso launches the app instead of just closing the window- closing the setup window before launch exits the app cleanly
Packaged desktop builds try:
- bundled
edge-tts.exe - bundled Python
-m edge_tts - system
edge-tts - Windows offline speech voices
- Google TTS fallback if available
This makes fresh Windows installs much more resilient than before.
Chromium web security is now enabled by default during Remotion render.
Only disable it if you have a specific compatibility issue:
set REMOTION_DISABLE_WEB_SECURITY=1Use this only for debugging or controlled environments.
That usually means your dev machine already had Python or edge-tts installed globally.
The current desktop app now reduces that problem by:
- preferring bundled
Edge-TTS - repairing the bundled runtime through the setup wizard
- falling back to Windows offline speech on Windows
Check:
- the setup wizard
- bundled runtime verification with
npm run electron:verify-bundle - Windows speech voices in system settings
- the
/healthendpoint
Run:
npm run electron:verify-releaseThat checks the unpacked desktop build for the expected bundled runtime files.