Code-first jobs
A job is a C# class implementing IJob — no YAML, no attributes-as-config. The engine discovers it by type name.
Klassd.Workflows runs your C# jobs as their own Kubernetes pods — or local processes in dev. Schedule them with cron, compose them into DAG workflows, and watch every run live.
Get started on GitHub →A job is a C# class implementing IJob — no YAML, no attributes-as-config. The engine discovers it by type name.
Each execution is a batch/v1 Kubernetes Job (one pod), with per-job CPU/memory requests and limits.
In dev the same worker runs as a child process — no cluster needed. Switch to Kubernetes with one config setting.
Compose jobs into a graph: dependencies, fan-out (one pod per item), conditional nodes, retries, and artifact passing.
A Blazor dashboard shows the job list, per-job console + progress, recurring jobs, and an SVG view of each DAG run.
Swap the job store (in-memory / Postgres / MongoDB) and the artifact store (filesystem / S3 / GCS) — or ship your own.
Implement IJob, log and report progress through the context, and let the scheduler run it anywhere. The same worker runs locally and in the cluster.
public sealed class MyJob : IJob
{
public async Task RunAsync(IJobContext ctx)
{
ctx.Log("starting");
ctx.ReportProgress(50, "halfway");
await Task.Delay(1000, ctx.CancellationToken);
ctx.Log("done");
}
}# Klassd.Workflows is in beta — install the prerelease packages
dotnet add package Klassd.Workflows.Core --prerelease
dotnet add package Klassd.Workflows.Kubernetes --prerelease