Core concepts
husky.yaml
husky.yaml is the source of truth for workflows. It defines jobs, schedules, retries, notifications, outputs, tags, and pipeline dependencies.
huskyd.yaml
huskyd.yaml is optional daemon configuration. It controls runtime concerns such as:
- API bind address
- TLS
- auth and RBAC
- logging
- storage paths
- executor limits
- dashboard options
Job
A job is the basic execution unit. Each job has:
- a name
- a description
- a frequency
- a command
Optional fields add reliability, observability, and routing behavior.
Run
A run is one execution attempt of a job. A job can have many runs over time.
A run records:
- trigger type
- reason
- attempt number
- timestamps
- exit code
- SLA breach flag
- healthcheck status
Trigger
A run can be started by:
schedulemanualdependency
These values appear in CLI history, audit output, notifications, and API responses.
DAG
The directed acyclic graph describes dependency ordering between jobs. Husky builds it from:
depends_onafter:<job>frequency expressions
A cycle is always a configuration error.
Cycle ID
When a root trigger starts a dependency chain, Husky assigns a cycle_id. Downstream jobs in the same chain share that cycle_id, which keeps output variables scoped correctly.
Output variable
A job can capture a value from its output and publish it under a variable name. Downstream jobs read it with template syntax:
{{ outputs.ingest.file_path }}
Healthcheck
A healthcheck is a second command that runs only after the main command exits successfully. It verifies outcome quality instead of mere process success.
SLA
An SLA is a soft time budget. When a running job exceeds it, Husky raises an SLA breach signal but does not kill the run.
Timeout
A timeout is a hard runtime limit. If the main command exceeds it, Husky terminates the process group.
Concurrency policy
Concurrency controls overlapping runs of the same job:
allowforbidreplace
Failure policy
When retries are exhausted, on_failure defines the final behavior:
alertskipstopignore
Tag
Tags are labels used for grouping and bulk operations. They power filtered status views, tag-based runs, pause/resume flows, and API filtering.
Catchup
catchup: true tells Husky to reconcile missed schedule ticks after a crash or downtime window. catchup: false skips the missed execution and moves on.
Local-first state
Husky treats runtime state as local and recoverable. The committed artifact is the workflow definition. The daemon's state directory is regenerated as needed.