add readme and changelog
This commit is contained in:
162
README.md
Normal file
162
README.md
Normal file
@@ -0,0 +1,162 @@
|
||||
# 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](https://www.sheepit-renderfarm.com/)**: Distributed rendering for Blender projects
|
||||
- **[Flamenco](https://flamenco.blender.org/)**: 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
|
||||
|
||||
```bash
|
||||
dotnet build
|
||||
```
|
||||
|
||||
## Running
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```json
|
||||
{
|
||||
"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]
|
||||
|
||||
Reference in New Issue
Block a user