A lightweight distributed rendering system for Blender, featuring a server/client in add-on or standalone version to distribute rendering tasks across multiple computers.
This project provides a simple yet effective way to distribute Blender rendering jobs across multiple machines.
You can choose one of this options:
You can use the Blender add-on to run a server and Client Script:
- Server Add-on (
blender_add-on_microfarm_server.py): A Blender addon that turns a Blender instance into a render server - Client Add-on (
blender_add-on_microfarm_client.py): A Blender addon to connects to the server and renders assigned frames
Using a Stand Alone python server (with web interface) and run client
- Server (
microfarm_server.py): A Python-based server with web interface that doesn't require Blender - Client (
microfarm_client.py): A Python script that connects to the server and renders assigned frames
The system is designed to be:
- Easy to set up and use
- Works with Blender 4.x and 5.x
- Handles frame distribution automatically
- Creates MP4 videos from rendered frames
- Provides job monitoring and management through the Blender UI or web interface
- Blend File Handling: Automatic transfer of blend data
- Automatic Frame Distribution: Distributes frames evenly across clients
- Job Management: Create, monitor, cancel, and complete jobs
- Fault Tolerance: Automatically reassigns frames from disconnected clients
- MP4 Creation: Automatically creates videos from rendered frames
- Flexible Output Organization: Configurable directory structure for frames and videos
- Web Interface: Modern web UI for job management (standalone server only)
- Job Persistence: Jobs persist across server restarts (standalone server only)
- File Browser: Browse and download rendered files and videos (standalone server only)
Download this github, example as a zip file: https://github.com/marielme/blenderfarm/archive/refs/heads/main.zip
- Open Blender (4.x or 5.x)
- Go to Edit > Preferences > Add-ons > Install
- Select the
blender_add-on_microfarm_server.pyfile and click 'Install Add-on' - Enable the add-on by checking the box next to "MicroFarm Server"
- Configure the addon settings:
- Set the server port (default: 9090)
- Set the output directory for rendered frames
Be sure: FFmpeg is installed in you platform
- Open Blender (4.x or 5.x)
- Go to Edit > Preferences > Add-ons > Install
- Select the
blender_add-on_microfarm_client.pyfile and click 'Install Add-on' - Enable the add-on by checking the box next to "MicroFarm Client"
- Configure the addon settings:
- Set the server port (default: 9090)
- Set the output directory for rendered frames
Donwnload using as zip file or using git
- Install Python 3.7+ if not already installed (python or python3)
- Install required packages (pip or pip3):
pip install -r requirements.txt
- Install FFmpeg for your platform if not already installed
python microfarm_server.py --port 9090 --web-port 8080 --output-dir /path/to/outputOptions:
--port: Socket server port for client connections (default: 9090)--web-port: Web interface port (default: 8080)--output-dir: Directory for rendered frames and job data (default: ./render_output)
The client requires Blender and Python 3.7+ to run.
blender --background --python microfarm_client.py -- --server SERVER_IP --port 9090 --name CLIENT_NAME"C:\Program Files\Blender Foundation\Blender 4.0\blender.exe" --background --python microfarm_client.py -- --server 192.168.1.100 --port 9090 --name WindowsClient1/Applications/Blender.app/Contents/MacOS/Blender --background --python microfarm_client.py -- --server 192.168.1.100 --port 9090 --name MacClient1blender --background --python microfarm_client.py -- --server 192.168.1.100 --port 9090 --name LinuxClient1- Open Blender on the computer that will act as the render server
- Go to the "Render Properties" tab
- Find the "MicroFram: Server" panel
- Click "Start Server" to begin listening for clients
- Configure job settings:
- Set "Frames Per Chunk" (how many frames to assign to a client at once)
- Enable/disable "Pack Textures"
- Configure MP4 video creation settings
- Start the standalone server as described in the setup section
- Open a web browser and navigate to
http://localhost:8080(or whatever port you configured) - The web interface has the following sections:
- Upload Blend File: Upload .blend files and configure rendering options
- Active Jobs: Shows currently rendering jobs with progress information
- Queued Jobs: Jobs waiting to be processed or paused jobs
- Completed Jobs: Finished jobs with preview images/videos and download options
- Connected Clients: Shows all connected render clients
- Open your Blender file with the animation you want to render
- Set up your render settings (resolution, samples, etc.) as you normally would
- In the "Render Server" panel, click "Create New Render Job"
- The job will be distributed to any connected clients
- In the web interface, use the "Upload Blend File" section
- Configure job settings (frame range, frames per chunk, etc.)
- Click "Upload and Create Job"
- The job will be queued or distributed to available clients
- Monitor Progress: The server UI shows job progress, including frame count and percentage
- Cancel Job: Click "Cancel Job" to stop an active job
- Force Complete: Click "Force Complete" to mark a stalled job as complete
- Clear Completed Job: Remove completed job data from memory
- Monitor Progress: The web UI displays real-time progress bars and frame counts
- Cancel Job: Click "Cancel" to stop an active or queued job
- Force Complete: Click "Force Complete" to mark a job as finished
- Activate Job: Start or restart a queued/pending job
- Delete Job: Remove completed jobs and their files
- Create MP4: Convert rendered frames to an MP4 video with selectable codec and quality
- View Files: Browse all files associated with a job
When a job completes, an MP4 video is automatically created from the rendered frames. You can configure:
- Video Codec: H.264, H.265/HEVC, or ProRes
- Video Quality: High, Medium, or Low
- MP4 Location: Parent Directory, Frames Directory, or Root Output Directory
Both server types organize rendered files in a similar structure:
output_directory/
├── job_001_1234567890/ # Job-specific directory
│ ├── frame_0001_.png # Individual frame files
│ ├── frame_0002_.png
│ ├── ...
│ └── job_001_1234567890_render.mp4 # Optional: MP4 in frames directory
│
├── job_001_1234567890_render.mp4 # Optional: MP4 in parent directory
├── job_001_1234567890_info.json # Standalone server: Job metadata (status, progress, etc.)
└── ...
Client-side files use this structure:
/tmp/blender_farm/ # Base directory
├── client_name/ # Per-client directory
│ └── project_name/ # Project-specific directory
│ └── job_id/ # Job-specific directory
│ ├── blend_file.blend # Job blend file
│ └── temp files # Rendering temporary files
- Blender Server And Client Addon: Blender 4.0 or higher
- Standalone Server: Python 3.7+, Flask, Werkzeug
- Python Server and Client: Blender 4.0 or higher + Python 3.7+
- Network: Clients must be able to connect to the server's IP address and port
- MP4 Creation: FFmpeg installed on the server machine (for video creation)
- Web Interface: Modern web browser (Chrome, Firefox, Safari, Edge)
- Connection Issues: Make sure the server IP is correct and the port is open in firewalls
- Stalled Jobs: Use the "Force Complete" button if jobs get stuck
- MP4 Creation Fails: Verify FFmpeg is installed on the server machine
- Client Disconnects: Check network stability and increase timeout settings if needed
- Blender server logs are visible in the Blender console
- Standalone server logs are displayed in the terminal where the server is running
- Client logs are printed to the console/terminal where the client is running
APACHE 2.0 License - See LICENSE file for details.
- Generated using AI tools such as Claude Code and Gemini 2.5
- Built for Blender 4.x
- Uses FFmpeg for video encoding
- Uses Flask for the standalone server's web interface
- Thanks to everyone in the Blender community
Contributions are welcome! Please feel free to submit a Pull Request.

