2025-12-17 16:55:36 -07:00
2025-12-17 16:55:36 -07:00
2025-12-17 16:51:41 -07:00
2025-12-17 16:51:41 -07:00
2025-12-17 16:55:36 -07:00
2025-12-17 16:55:36 -07:00
2025-12-17 15:33:32 -07:00
2025-12-17 15:33:32 -07:00
2025-12-17 15:55:45 -07:00
2025-12-17 15:55:45 -07:00
2025-12-17 15:34:34 -07:00
2025-12-17 15:34:34 -07:00
2025-12-17 15:40:47 -07:00
2025-12-17 15:34:34 -07:00
2025-12-17 15:40:47 -07:00
2025-12-17 15:55:45 -07:00

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:
    • SheepIt: Distributed rendering for Blender projects
    • Flamenco: Blender Foundation's render farm manager
  • 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

  1. Click Add Worker button
  2. 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)
  3. Click Save

Starting a Worker

  1. Select a worker from the list
  2. Click Start button
  3. The application will:
    • Deploy the controller script to the remote machine
    • Start the worker process
    • Monitor the worker status

Stopping a Worker

  1. Select a running worker
  2. Click Stop button
  3. The worker process will be gracefully terminated

Attaching to Worker Logs

  1. Select a worker
  2. Click Attach button
  3. A terminal session will open showing real-time worker logs
  4. Type detach to 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:

  1. Controller Script: Deployed to %LocalAppData%\UnifiedWorkers\controller.ps1

  2. Worker Data: Stored in %LocalAppData%\UnifiedWorkers\{workerType}\{workerName}\

    • logs\worker.log: Worker output logs
    • state\worker-info.json: Worker metadata and status
    • state\commands.txt: Command queue for worker control
    • state\payload.ps1: Worker execution script
  3. 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]

Description
No description provided
Readme 1 MiB
Languages
C# 79.5%
PowerShell 20.5%