Quickstart
A workflow is a set of tasks. The simplest one has a single task that runs a shell command, so that is where we will start.
1. Write the workflow
Create a file called hello.yaml:
hello.yaml
name: hello
kind: horus_workflow
tasks:
- id: greet
name: Greet
kind: horus_task
target: { kind: local, working_directory: "./horus-work" }
runtime:
kind: command
command: "mkdir -p \"$$(dirname $message)\"\necho 'Hello from Horus!' > $message\n"
executor:
kind: shell
outputs:
- { kind: file, id: message, path: "./horus-out/message.txt" }
What each piece means:
runtimeis what to run. Here it is a shellcommand.executoris how to run it.shellruns the command in a subprocess.targetis where to run it.localruns on your machine.outputslists the files this task produces. In the command,$messageexpands to the output artifact's path, so the task writes its own output.
2. Run it
horus run hello.yaml
A live dashboard appears while the workflow runs, with a progress bar, a task
table, the dependency graph, and a log pane. When the task finishes it turns
green (✓).
3. Check the result
cat horus-out/message.txt
Hello from Horus!
You described a task in YAML and Horus ran it, with live progress and the output captured on disk.
Where to go next
- Core concepts covers workflows, tasks, artifacts, and edges.
- Writing workflows in YAML has the full schema and a multi-task example with dependencies.
- Writing workflows in Python is for tasks that need real Python logic or user prompts.
- Running workflows explains the
horus runcommand and the live dashboard.