Architecture
daggler/
├── apps/
│ ├── cli/ daggler-cli: terminal linter (tsup, Node ESM)
│ ├── web/ Next.js 15 + React 19 editor
│ └── worker/ Graphile Worker job registry (stubs)
└── packages/
├── workflow-ir/ parser, IR, graph, serialize, patches
├── validators/ validation layers, policy engine, actions catalog
├── runner-protocol/ RunnerPort and the confidence ladder
├── runner/ act and actionlint adapters
├── github/ GitHub repository port and adapters
├── inventory/ repository automation map
└── db/ Drizzle Postgres schema@daggler/workflow-ir
- Parse YAML into a
WorkflowIR(jobs, steps, triggers, permissions, matrix, concurrency, outputs). - Source map every IR node back to its offset, line and column in the original YAML.
- Graph:
buildGraphprojects jobs andneedsedges into aWorkflowGraphwith depths for layout, cycle detection and unreachable-job detection. - Serialize:
serializeanddenormalizeround-trip an IR to YAML. - Patches:
applyCommandapplies structured edits while preserving comments and formatting;pinActionToShaswaps a mutable tag for a verified SHA.
@daggler/validators
See Validation layers and Policy rules.
For the full design notes, read ARCHITECTURE.md in the repository.