CLI Runner
Headless workflow execution from any shell or CI system
Overview
The Aurora Workflows CLI Runner (Aurora.Workflows.Cli) is a headless executor that loads a compiled .awfc bundle and runs it. It targets .NET 8 and writes structured log output to the console and to rolling daily log files.
Directory Layout
On first run the CLI Runner creates the following directories next to its executable:
| Directory | Purpose |
|---|---|
workflows/ | Place one or more .awfc files here. |
.packages/ | Local NuGet package cache used to resolve dependencies at runtime. |
logs/ | Rolling daily log files (aurora-YYYYMMDD.log). |
Running a Workflow
Place one or more .awfc files in the workflows/ directory, then start the runner:
Aurora.Workflows.Cli.exe
- If exactly one
.awfcfile is found, it is loaded and executed immediately. - If multiple files are found, the runner lists them and prompts you to enter the index of the desired workflow.
- If no files are found, the runner logs a warning and exits.
Passing Arguments
Command-line arguments are mapped to global workflow variables before execution starts. The runner supports two syntaxes:
Key=Value syntax
Aurora.Workflows.Cli.exe --inputPath="C:\data\file.csv" --outputPath="C:\out\result.json"
Key Value syntax
Aurora.Workflows.Cli.exe --inputPath "C:\data\file.csv" --outputPath "C:\out\result.json"
Flag (no value) syntax
Aurora.Workflows.Cli.exe --verbose
accessible inside any = expression simply as the variable inputPath (or _global_inputPath from within nested scopes).
-- is stripped; the bare key name is stored.Logging
The runner uses Serilog with two sinks:
- Console – formatted as
[HH:mm:ss LVL] message. - File – rolling daily files in
logs/aurora-YYYYMMDD.log, formatted with full timestamps.
The minimum log level is Information. Debug-level messages from individual tasks are suppressed unless you modify the logger configuration in Program.cs.
Console Title
The runner sets the console window title to Aurora Workflow Executor on startup, and changes it to the loaded workflow name once the bundle has been parsed.
Exit Behavior
The runner exits after the workflow finishes. For workflows with periodic triggers (e.g., TimedTrigger, CronTrigger) the process stays alive and keeps firing according to the trigger schedule until it is terminated externally (Ctrl+C or process kill).