How to Install MoneyPrinterTurbo: Complete Setup Guide
Clone the repository, create a Python 3.11 virtual environment, install dependencies from requirements.txt, configure your API keys in config.toml, and run python main.py to start the FastAPI server on 127.0.0.1:8080.
MoneyPrinterTurbo is a FastAPI-based service that automatically generates short videos complete with AI scripts, stock footage, subtitles, and voiceovers. Installing MoneyPrinterTurbo requires only a lightweight Python setup to get the full MVC application running locally. This guide covers both local Python installation and Docker deployment using the actual source code structure from the harry0703/MoneyPrinterTurbo repository.
Local Installation Steps
Follow these steps to install MoneyPrinterTurbo in a local Python environment. This method is ideal for development and gives you direct control over the configuration files.
1. Clone the Repository
Start by cloning the source code from GitHub:
git clone https://github.com/harry0703/MoneyPrinterTurbo.git
cd MoneyPrinterTurbo
2. Create a Python Virtual Environment
The application requires Python 3.11. Use conda to create an isolated environment:
conda create -n MoneyPrinterTurbo python=3.11
conda activate MoneyPrinterTurbo
3. Install Dependencies
Install the required packages listed in requirements.txt:
pip install -r requirements.txt
This installs FastAPI, Uvicorn, and other core dependencies needed by the application entry point in main.py.
4. Install ImageMagick (Optional)
ImageMagick is required for subtitle rendering. Without it, video generation will fail at the subtitle composition stage.
- Windows: Download the static build, install it, and set the path in
config.toml. - macOS:
brew install imagemagick - Ubuntu:
sudo apt-get install imagemagick
5. Configure the Application
Copy the example configuration template and edit it with your credentials:
cp config.example.toml config.toml
Edit config.toml to add your Pexels API key, LLM provider (OpenAI, Azure, or local), and ImageMagick binary path. The configuration loader in app/config/config.py parses this file at runtime to populate config.app settings and config.listen_port.
6. Start the FastAPI Server
Run the entry point script to start the Uvicorn server:
python main.py
By default, the server listens on 127.0.0.1:8080. The interactive API documentation is available at http://127.0.0.1:8080/docs, which reflects all endpoints registered in app/router.py and implemented in app/controllers/v1/video.py.
7. Launch the Web UI (Optional)
To use the browser interface instead of direct API calls, start the Streamlit-based UI:
- Linux/macOS:
sh webui.sh - Windows:
webui.bat
These scripts execute streamlit run webui/Main.py and automatically open your default browser.
Docker Deployment
For production servers or to avoid dependency conflicts, use the containerized setup.
Start with Docker Compose
From the project root, run:
docker compose up
This builds the image, installs ImageMagick automatically, and exposes:
- The FastAPI backend on
0.0.0.0:8080 - The Streamlit Web UI on
0.0.0.0:8501
Verifying the Installation
Test your setup by creating a video through the REST API. The business logic resides in app/services/, while the endpoint definitions live in app/controllers/v1/video.py.
Create a Video Task
import requests
api_url = "http://127.0.0.1:8080/videos"
payload = {
"theme": "How to make coffee",
"language": "en",
"video_width": 1080,
"video_height": 1920,
"subtitle_provider": "edge"
}
resp = requests.post(api_url, json=payload)
print(resp.json()) # Contains task_id
Poll for Completion
Task state is managed by the controller layer in app/controllers/manager/:
import time
import requests
task_id = "your-task-id"
status_url = f"http://127.0.0.1:8080/tasks/{task_id}"
while True:
r = requests.get(status_url)
data = r.json()["data"]
if data.get("status") == "finished":
print("Video ready:", data["videos"])
break
time.sleep(2)
Download the Result
Retrieve the final MP4 file:
download_url = f"http://127.0.0.1:8080/download/{task_id}/final-1.mp4"
r = requests.get(download_url)
with open("final.mp4", "wb") as f:
f.write(r.content)
Key Architecture Components
Understanding these files helps with troubleshooting:
main.py: Entry point that creates the FastAPI app and starts the Uvicorn server.app/router.py: Root router mounting all version-1 controllers includingapp/controllers/v1/video.pyandapp/controllers/v1/llm.py.app/controllers/v1/video.py: Implements/videosPOST,/tasks/{task_id}GET, and/download/{file_path}endpoints.app/services/: Core logic for video stitching, audio synthesis, and subtitle generation.webui.sh/webui.bat: Convenience scripts that launch the Streamlit interface.
Summary
- Local install: Clone, create Python 3.11 environment, run
pip install -r requirements.txt, copyconfig.example.tomltoconfig.toml, then executepython main.py. - Docker install: Run
docker compose upfrom the project root to expose ports 8080 (API) and 8501 (UI). - Prerequisites: Python 3.11 is required; ImageMagick is optional but necessary for subtitle rendering.
- Configuration: Edit
config.tomlto set your Pexels API key and LLM provider before starting the server. - Entry points:
main.pystarts the API, whilewebui.shorwebui.batlaunches the browser interface. - API location: Endpoints are defined in
app/controllers/v1/video.pyand documented at/docswhen the server runs.
Frequently Asked Questions
What Python version is required to install MoneyPrinterTurbo?
Python 3.11 is recommended. The project uses modern type hints and async features that require this version. Create your environment specifically with python=3.11 to avoid compatibility issues with dependencies in requirements.txt.
Is ImageMagick mandatory for MoneyPrinterTurbo?
ImageMagick is optional for the API server but required for video generation. If you skip the installation, the FastAPI server will start, but video creation will fail when the subtitle service in app/services/ attempts to render text overlays. Install it via Homebrew on macOS, APT on Ubuntu, or download the static binary for Windows.
How do I run MoneyPrinterTurbo on a remote server?
Change the listen host in config.toml from 127.0.0.1 to 0.0.0.0, then start the server with python main.py. For production environments, use the Docker Compose setup instead of the local Python installation, as it handles networking and process isolation automatically.
Can I use MoneyPrinterTurbo without the Web UI?
Yes, the Web UI is completely optional. The core functionality is exposed through the REST API defined in app/controllers/v1/video.py. You can interact directly with endpoints like POST /videos and GET /tasks/{task_id} using HTTP clients or the Python requests library, as shown in the verification examples above.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →