Overview of Dagu Runtime Profiles
dev, staging, prod) without changing the DAG YAML. Profiles modify the variables and secrets supplied to a run but do not create separate schedulers, execution environments, or worker pools.website·Indexed 33 days ago
https://docs.dagu.sh/Documentation for Dagu, a workflow engine for automating DAGs. It covers writing workflows with YAML specifications, managing resource limits, scheduling via cron, and utilizing various step types including SQL (PostgreSQL, SQLite), LLM integrations, Browser and Computer automation, and containerized execution via Docker or Podman.
dev, staging, prod) without changing the DAG YAML. Profiles modify the variables and secrets supplied to a run but do not create separate schedulers, execution environments, or worker pools.Dagu allows interaction with existing mailboxes via IMAP (for reading/organizing) and SMTP (for sending). The primary actions available are:
mail.search: Find emails in a folder, including sender, subject, text, and attachments.mail.organize: Mark emails as read, unread, flagged, or unflagged, and move them to folders, archive, or trash.mail.send: Send emails from a configured account or reply to received emails.Dagu exposes three primary MCP tools to allow external agents or clients to interact with the system:
dagu_read: Used to retrieve the current state of DAGs, Markdown Wiki pages, DAG runs, logs, and reference resources.dagu_change: Used to preview or apply changes to DAG YAML specifications and workspace-aware Wiki pages.dagu_execute: Used to manage the lifecycle of DAG runs, including starting, enqueuing, retrying, or stopping them.Incident routing is used to open and resolve incidents in operational management systems (like PagerDuty and SolarWinds Incident Response) when workflow failures require an operational response. Unlike standard notifications (Slack, Teams, Email), incident routing supports a full lifecycle: triggering an incident on final failure, deduplicating repeated failures, and automatically resolving the incident when the DAG recovers.
License Requirement: Incident routing requires an active Dagu self-host license or trial.
${context.paths.artifacts_dir}, uses an artifact action, or uses stdout.artifact / stderr.artifact. It can also be enabled explicitly in the DAG configuration.Persistent state is used to store small JSON values that must survive across DAG runs. It is ideal for cursors, checkpoints, last-seen IDs, previous API responses, and simple change detection.
Key constraints and characteristics:
Comparison with other Dagu mechanisms:
dev, staging, prod) without hardcoding environment values into the DAG YAML. Profiles are configuration overlays and do not provide execution isolation; for independent execution boundaries, separate Dagu deployments should be used.POST /api/v1/webhooks/{fileName}. Each DAG can have at most one webhook configuration. While management of webhooks uses the standard authenticated API, trigger requests use a specific webhook token instead of API keys or session JWTs.Workspaces are used to organize workflows and runs within a single Dagu installation, typically to separate them by team, business function, or product (e.g., finance, platform-ops). They provide scoping for access control, Wiki pages, managed secrets, profile defaults, notifications, and incident routing.
Important Limitation: Workspaces are NOT environment boundaries. They share the same scheduler, execution environment, coordinator, workers, queues, storage, and Git Sync configuration. To isolate development, staging, and production environments, you must run separate Dagu deployments.
itemId and kind (e.g., dag, file, doc, doc-asset) used by the Web UI, CLI, and REST API. DAG and Wiki page IDs omit their file extensions (.yaml, .yml, .md), while supporting files retain their full relative path and extension.worker_selector field in DAG definitions. All workers must also be configured with worker.coordinators to connect to the coordinator.