This document explains how to set up the project for development, local rendering, and desktop packaging.
The project now supports four main runtime entrypoints that share one application core:
npm run devnpm run generatenpm run mcpCurrent executable entry files:
src/server.tssrc/cli.tssrc/mcp-server.tselectron/electron-main.tsFor the architectural layout behind these entrypoints, see ARCHITECTURE.md.
Voice generation now follows this order when possible:
src/speech/) — Kokoro/Chatterbox TTS, supports voice cloning, auto-started by pipelineInstall Node.js from nodejs.org.
Verify:
node -v
npm -v
npm install
Windows:
py -m pip install -r requirements.txt
If py is unavailable:
python -m pip install -r requirements.txt
macOS or Linux:
python3 -m pip install -r requirements.txt
This 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 -version
Copy .env.example to .env. For a full list of every variable and its
default, see ENVIRONMENT.md.
Windows PowerShell:
Copy-Item .env.example .env
macOS or Linux:
cp .env.example .env
Set at least:
TTS_PROVIDER=voicebox
PEXELS_API_KEY=your_key_here
PIXABAY_API_KEY=
GEMINI_API_KEY=
PUBLIC_BASE_URL=
PORT=3001
VIDEO_ORIENTATION=portrait
TTS_PROVIDER defaults to voicebox (vendored in-repo backend at src/speech/).
PEXELS_API_KEY is recommended for better stock media in the browser workflow.
npm run dev
Open:
http://localhost:3001/
Create or update input/scripts/input-scripts.json, then run:
npm run generate
npm run mcp
Use this runtime when connecting Claude Desktop, Claude Code, or other MCP clients.
npm run remotion:studio
npx tsc -p tsconfig.json --noEmit
cmd /c node_modules\.bin\tsc.cmd -p tsconfig.electron.json --noEmit
npm run electron:verify-bundle
npm run electron:verify-release
Start the portal and open:
http://localhost:3001/api/health
The health response helps verify:
The Electron setup window is not just informational anymore.
Launch App explicitly starts the backend and opens the portalSkip also launches the app instead of just closing the windowPackaged desktop builds try:
edge-tts.exe-m edge_ttsedge-ttsThis 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=1
Use 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:
Edge-TTSCheck:
npm run electron:verify-bundle/health endpointRun:
npm run electron:verify-release
That checks the unpacked desktop build for the expected bundled runtime files.