4.7 KiB
Unified Farm Launcher
A desktop application for managing remote render farm workers across multiple systems. Supports both SheepIt and Flamenco worker types with a unified interface for starting, stopping, and monitoring workers via SSH.
Features
- Multi-Worker Support: Manage multiple remote workers from a single interface
- Worker Types:
- Remote Management: Control workers on remote machines via SSH
- Worker Lifecycle: Start, stop, and attach to worker processes
- Filtering: Filter workers by type (All, SheepIt, Flamenco)
- Configuration Management: Add, edit, and delete worker configurations
- Real-time Logging: Attach to worker logs for real-time monitoring
Requirements
- .NET 8.0 or later
- Windows (PowerShell required on remote machines)
- SSH access to remote worker machines
- Java (Temurin 21 recommended) on remote machines for SheepIt workers
- Flamenco worker executable on remote machines for Flamenco workers
Building
dotnet build
Running
dotnet run
Or build and run the executable from the output directory.
Configuration
Configuration is stored in %LocalAppData%\UnifiedFarmLauncher\workers.json. The application will create this file automatically on first run.
Configuration Structure
{
"workers": [
{
"id": 1,
"name": "worker-name",
"enabled": true,
"ssh": {
"host": "192.168.1.100",
"port": 22,
"username": "user",
"password": "password"
},
"workerTypes": {
"sheepIt": {
"username": "sheepit-username",
"renderKey": "render-key",
"gpu": "CPU"
},
"flamenco": {
"workerPath": "C:\\path\\to\\flamenco-worker",
"networkDrives": ["Z:", "Y:"],
"networkPaths": ["\\\\server\\share"]
}
}
}
],
"globalSettings": {
"sheepItJarUrls": [
"https://sheepit-renderfarm.com/media/applet/client-latest.php"
]
}
}
Usage
Adding a Worker
- Click Add Worker button
- Fill in the worker details:
- Name: Unique identifier for the worker
- SSH Configuration: Host, port, username, and password
- Worker Type Configuration: Configure either SheepIt or Flamenco (or both)
- Click Save
Starting a Worker
- Select a worker from the list
- Click Start button
- The application will:
- Deploy the controller script to the remote machine
- Start the worker process
- Monitor the worker status
Stopping a Worker
- Select a running worker
- Click Stop button
- The worker process will be gracefully terminated
Attaching to Worker Logs
- Select a worker
- Click Attach button
- A terminal session will open showing real-time worker logs
- Type
detachto exit the session
Filtering Workers
Use the tabs at the top to filter workers:
- All Workers: Shows all configured workers
- SheepIt: Shows only SheepIt workers
- Flamenco: Shows only Flamenco workers
Architecture
Project Structure
UFL/
├── Models/ # Data models (ConfigRoot, WorkerConfig, etc.)
├── Services/ # Business logic services
│ ├── ConfigService.cs # Configuration management
│ ├── SshService.cs # SSH communication
│ ├── WorkerControllerService.cs # Worker lifecycle management
│ └── AttachService.cs # Log attachment service
├── ViewModels/ # MVVM view models
├── Views/ # Avalonia UI views
└── Scripts/ # PowerShell scripts (embedded resources)
├── remote_worker_controller.ps1
└── remote_worker_attach.ps1
Remote Worker Architecture
Workers run on remote machines under a controller process:
-
Controller Script: Deployed to
%LocalAppData%\UnifiedWorkers\controller.ps1 -
Worker Data: Stored in
%LocalAppData%\UnifiedWorkers\{workerType}\{workerName}\logs\worker.log: Worker output logsstate\worker-info.json: Worker metadata and statusstate\commands.txt: Command queue for worker controlstate\payload.ps1: Worker execution script
-
Worker Process: The controller manages the worker process lifecycle, handles restarts, and monitors status.
Technologies
- Avalonia UI: Cross-platform .NET UI framework
- ReactiveUI: MVVM framework
- System.Text.Json: JSON serialization
- PowerShell: Remote script execution
License
[Specify your license here]