Features
Dagu provides a comprehensive set of features for building and managing workflows. This section covers everything you need to know about each feature in detail.
Feature Categories
🖥️ Interfaces
How to interact with Dagu:
- Command Line Interface - Run and manage workflows from the terminal
- Web UI - Monitor and control workflows visually
- REST API - Integrate Dagu programmatically
🔧 Executors
Different ways to run your commands:
- Shell - Run any command or script (default)
- Docker - Execute in containers for isolation
- SSH - Run commands on remote servers
- HTTP - Make REST API calls and webhook requests
- Mail - Send email notifications and reports
- JQ - Process and transform JSON data
⏰ Scheduling
Control when workflows run:
- Cron expressions with timezone support
- Multiple schedules per workflow
- Start/stop/restart patterns
- Skip redundant executions
🚀 Execution Control
Advanced execution patterns:
- Parallel execution with concurrency limits
- Conditional execution (preconditions)
- Continue on failure patterns
- Retry and repeat policies
- Output size management
- Signal handling
📊 Data Flow
Managing data in workflows:
- Parameters and runtime values
- Output variables between steps
- Environment variable management
- JSON path references
- Template rendering
- Special system variables
📋 Queue System
Workflow orchestration at scale:
- Built-in queue management
- Per-DAG queue assignment
- Priority-based execution
- Manual queue operations
- Concurrency control
📧 Notifications
Stay informed about workflow status:
- Email alerts on success/failure
- Custom notification handlers
- Log attachments
- Flexible SMTP configuration
🔍 OpenTelemetry Tracing
Distributed tracing for observability:
- End-to-end workflow visibility
- Performance bottleneck identification
- Nested DAG correlation
- Integration with Jaeger, Tempo, etc.
Distributed Execution
Scale workflows across multiple machines:
- Coordinator-worker architecture
- Label-based task routing
- Real-time worker monitoring
- Requires shared storage for DAG files and state
- Horizontal scaling
Worker Labels
Task routing for distributed execution:
- Capability-based worker tagging
- Flexible label matching
- Resource optimization
- Geographic distribution
- Compliance requirements
Feature Highlights
Zero Dependencies
Unlike other workflow engines, Dagu requires:
- No database
- No message broker
- No runtime dependencies
- Just a single binary
Language Agnostic
Run anything that works on your system:
yaml
steps:
- name: python
command: python script.py
- name: node
command: npm run task
- name: go
command: go run main.go
- name: bash
command: ./script.sh
Hierarchical Workflows
Build complex systems from simple parts:
yaml
steps:
- name: data-pipeline
run: etl
params: "DATE=today"
- name: ml-training
run: train
parallel: "image text"
params: "MODEL=latest TYPE=${ITEM}"
- name: deployment
run: deploy
parallel: "staging production"
params: "ENV=${ITEM}"
---
name: etl
params:
- DATE: today
steps:
- name: etl
command: python etl.py
---
name: train
params:
- MODEL: latest
- TYPE: ""
steps:
- name: train
command: python train.py --model ${MODEL} --type ${TYPE}
---
name: deploy
params:
- ENV: ""
steps:
- name: deploy
command: kubectl apply -f deployment.yaml --env ${ENV}
See Also
Explore specific features:
- Command Line Interface - Master the CLI
- Shell Executor - Run commands effectively
- Scheduling - Automate workflow execution
- Execution Control - Advanced patterns