Skip to content

Reference

RunForge Desktop’s core logic is published as a standalone NuGet package for integration into other .NET applications:

PackageDescription
RunForgeDesktop.CoreCore domain models and services for ML training run management — run lifecycle, hyperparameter sweeps, live monitoring, and artifact inspection
Terminal window
dotnet add package RunForgeDesktop.Core

The Core package contains no UI dependencies. It provides the domain models, services, and interfaces that the desktop app (and any other consumer) builds on.

RequirementValue
OSWindows 10 (1809+) or Windows 11
Architecturex64
Runtime.NET 10 (bundled in MSIX)
Python3.10+ (for training)
GPUOptional (CUDA for GPU training)
Disk Space~100 MB
runforge-desktop/
+-- src/
| +-- RunForgeDesktop/ # MAUI app (UI, ViewModels)
| +-- RunForgeDesktop.Core/ # Core services, models
+-- tests/
| +-- RunForgeDesktop.Core.Tests/
+-- docs/
| +-- PHASE-DESKTOP-0.1-ACCEPTANCE.md
| +-- INSTALL.md
| +-- GAUNTLETS.md
+-- scripts/
| +-- build-msix.ps1
| +-- build-release.cmd
+-- site/ # Landing page + handbook (this site)

The src/RunForgeDesktop/ directory contains the MAUI application: pages, view models, converters, and platform-specific code. src/RunForgeDesktop.Core/ contains the domain layer: models, services, and interfaces shared by all consumers.

All training artifacts are stored under .ml/runs/ in the user’s workspace directory. Each run creates a timestamped folder:

.ml/
+-- runs/
+-- 20240101-123456-myrun-abc1/
+-- run.json # Run manifest (config, status, timing)
+-- metrics.jsonl # Live metrics (one JSON object per line)
+-- stdout.log # Standard output from training process
+-- stderr.log # Standard error from training process
FileFormatDescription
run.jsonJSONRun manifest recording the configuration used, device selection, status, and timing
metrics.jsonlJSONLAppend-only metrics stream, readable while training is in progress
stdout.logTextFull stdout capture from the Python training process
stderr.logTextFull stderr capture from the Python training process

All schemas, guarantees, and artifact formats are defined and frozen in the upstream runforge-vscode repository. RunForge Desktop consumes those artifacts faithfully — it contains no training logic, schema definitions, or contract ownership.

RunForge Desktop integrates with a Python-based execution daemon (runforge_cli) for advanced job scheduling. The daemon manages parallelism, group operations, and GPU slot allocation.

Queue state is stored under .runforge/ in the workspace:

.runforge/
+-- queue/
| +-- queue.json # Job states, priorities, and scheduling
| +-- daemon.json # Daemon heartbeat, PID, and health status
+-- groups/
+-- <group-id>/
+-- group.json # Group summary: name, status, run entries, paused flag

Daemon operations available from the desktop app:

OperationDescription
Start daemonLaunch the daemon with a configurable max_parallel limit
Stop daemonGracefully terminate the daemon process
Enqueue runAdd a single run to the queue with optional group and priority
Enqueue sweepSubmit a sweep plan and get back a group ID
Pause groupPrevent new jobs in the group from starting
Resume groupAllow paused group jobs to start again
Retry failedRe-enqueue all failed runs in a group
Cancel groupCancel all queued runs in a group

GPU scheduling: the daemon supports gpu_slots to limit GPU concurrency independently of CPU parallelism. CPU jobs and GPU jobs can run concurrently without starving each other.

AspectDetail
Data touchedML training run configs, metrics, logs, artifacts in user-selected workspace. SQLite for local state
Data NOT touchedNo telemetry, no analytics, no cloud sync, no accounts, no credentials
PermissionsRead/write to user-selected workspace only. Spawns Python training processes
NetworkNone — fully offline application
TelemetryNone collected or sent

RunForge Desktop follows standard Windows permission models. It only accesses the workspace directory the user explicitly selects. No data leaves the machine.

See SECURITY.md for vulnerability reporting.

  • .NET 10 SDK
  • Windows 10/11
  • Visual Studio 2022 (17.12+) with the MAUI workload, OR VS Code with the .NET MAUI extension
Terminal window
# Debug build
dotnet build
# Run tests
dotnet test
# Release build
.\scripts\build-release.cmd
# Package as MSIX
.\scripts\build-msix.ps1

All schemas, guarantees, and artifact formats are defined and frozen in the upstream repository:

https://github.com/mcp-tool-shop-org/runforge-vscode

RunForge Desktop contains:

  • No training logic
  • No schema definitions
  • No contract ownership

It consumes the artifacts and contracts defined upstream. If you need to understand the data format in detail, that repository is the canonical source.