{"id":14386937,"url":"https://github.com/dagu-org/dagu","last_synced_at":"2026-03-05T13:10:02.698Z","repository":{"id":37010139,"uuid":"484434975","full_name":"dagu-org/dagu","owner":"dagu-org","description":"A versatile, lightweight workflow engine with builtin Web UI. Define workflow in a simple declarative YAML format.  Execute them anywhere, compose complex pipelines from reusable sub-workflows, and distribute tasks across workers. Just works without complex infrastructure.","archived":false,"fork":false,"pushed_at":"2026-01-04T16:25:38.000Z","size":81508,"stargazers_count":2969,"open_issues_count":120,"forks_count":219,"subscribers_count":19,"default_branch":"main","last_synced_at":"2026-01-06T01:44:15.648Z","etag":null,"topics":["agent-workflow","ai-workflow","continuous-delivery","cron","dag","data-pipeline","devops","directed-acyclic-graph","durable-execution","durable-workflows","job-scheduler","task-automation","task-scheduler","workflow-engine","workflow-management","workflow-orchestration","workflow-scheduler"],"latest_commit_sha":null,"homepage":"https://dagu.cloud","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dagu-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["dagu-org"]}},"created_at":"2022-04-22T13:00:42.000Z","updated_at":"2026-01-05T19:50:50.000Z","dependencies_parsed_at":"2026-01-03T19:04:55.603Z","dependency_job_id":null,"html_url":"https://github.com/dagu-org/dagu","commit_stats":{"total_commits":1008,"total_committers":40,"mean_commits":25.2,"dds":0.09424603174603174,"last_synced_commit":"6d377ed7f2ea7b755df2455d5d6d6050e8813b56"},"previous_names":["yohamta/dagu","dagu-labs/dagu","yohamta/jobctl","hotaruswarm/dagu","dagu-dev/dagu","daguflow/dagu","dagu-org/dagu","dagu-go/dagu"],"tags_count":216,"template":false,"template_full_name":null,"purl":"pkg:github/dagu-org/dagu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dagu-org%2Fdagu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dagu-org%2Fdagu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dagu-org%2Fdagu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dagu-org%2Fdagu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dagu-org","download_url":"https://codeload.github.com/dagu-org/dagu/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dagu-org%2Fdagu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28234547,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2026-01-07T02:00:05.975Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-workflow","ai-workflow","continuous-delivery","cron","dag","data-pipeline","devops","directed-acyclic-graph","durable-execution","durable-workflows","job-scheduler","task-automation","task-scheduler","workflow-engine","workflow-management","workflow-orchestration","workflow-scheduler"],"created_at":"2024-08-28T20:00:55.801Z","updated_at":"2026-03-05T13:10:02.658Z","avatar_url":"https://github.com/dagu-org.png","language":"Go","funding_links":["https://github.com/sponsors/dagu-org"],"categories":["Go","Job Scheduler","automation","Workflow Frameworks"],"sub_categories":["Search and Analytic Databases","Utility/Miscellaneous"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./assets/images/hero-logo.webp\" width=\"480\" alt=\"Dagu Logo\"\u003e\n  \u003cp\u003e\n    \u003ca href=\"https://docs.dagu.sh/reference/changelog\"\u003e\u003cimg src=\"https://img.shields.io/github/release/dagu-org/dagu.svg?style=flat-square\" alt=\"Latest Release\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/dagu-org/dagu/actions/workflows/ci.yaml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/dagu-org/dagu/ci.yaml?style=flat-square\" alt=\"Build Status\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://discord.gg/gpahPUjGRk\"\u003e\u003cimg src=\"https://img.shields.io/discord/1095289480774172772?style=flat-square\u0026logo=discord\" alt=\"Discord\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://bsky.app/profile/dagu-org.bsky.social\"\u003e\u003cimg src=\"https://img.shields.io/badge/Bluesky-0285FF?style=flat-square\u0026logo=bluesky\u0026logoColor=white\" alt=\"Bluesky\"\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://docs.dagu.sh\"\u003eDocs\u003c/a\u003e |\n    \u003ca href=\"https://docs.dagu.sh/writing-workflows/examples\"\u003eExamples\u003c/a\u003e |\n    \u003ca href=\"https://discord.gg/gpahPUjGRk\"\u003eDiscord\u003c/a\u003e |\n    \u003ca href=\"https://github.com/dagu-org/dagu\"\u003eGitHub\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n## What is Dagu Workflow Engine?\n\n**Dagu is a self-contained, lightweight workflow engine for small teams.** Define workflows in simple YAML, execute them anywhere with a single binary, compose complex pipelines from reusable sub-workflows, and distribute tasks across workers. All without requiring databases, message brokers, or code changes to your existing scripts.\n\nBuilt for developers who want powerful workflow orchestration without the operational overhead. For a quick feel of how it works, take a look at the [examples](https://docs.dagu.sh/writing-workflows/examples).\n\n- Zero-Ops: Single binary, file-based storage, under 128MB memory footprint\n- Full-Power: Docker steps, SSH execution, DAG composition, distributed mode, Git-based version management for DAGs \u0026 docs, [19+ executors](https://docs.dagu.sh/reference/executors)\n- AI-Native: Built-in LLM agent creates, edits, and debugs workflows from natural language\n- Legacy Script Friendly: Orchestrate existing shell commands, Python scripts, Docker containers, or HTTP calls without modification.\n- Air-gapped Ready: Runs in isolated environments without external dependencies or network access\n\n![Web UI](./assets/images/demo-web-ui.webp)\n\n**Try it live:** [Live Demo](https://demo-instance.dagu.sh/) (credentials: `demouser` / `demouser`)\n\n## Why Dagu?\n\n```\n  Traditional Orchestrator           Dagu\n  ┌────────────────────────┐        ┌──────────────────┐\n  │  Web Server            │        │                  │\n  │  Scheduler             │        │  dagu start-all  │\n  │  Worker(s)             │        │                  │\n  │  PostgreSQL            │        └──────────────────┘\n  │  Redis / RabbitMQ      │         Single binary.\n  │  Python runtime        │         Zero dependencies.\n  └────────────────────────┘         Just run it.\n    6+ services to manage\n```\n\nOne binary. No Postgres. No Redis. No Python. Just `dagu start-all`.\n\n## Quick Start\n\n### 1. Install\n\n**macOS/Linux:**\n\n```bash\ncurl -L https://raw.githubusercontent.com/dagu-org/dagu/main/scripts/installer.sh | bash\n```\n\n**Homebrew:**\n\n```bash\nbrew install dagu\n```\n\n**Windows (PowerShell):**\n\n```powershell\nirm https://raw.githubusercontent.com/dagu-org/dagu/main/scripts/installer.ps1 | iex\n```\n\n**Docker:**\n\n```bash\ndocker run --rm -v ~/.dagu:/var/lib/dagu -p 8080:8080 ghcr.io/dagu-org/dagu:latest dagu start-all\n```\n\n\u003e More options (npm, custom paths, specific versions): [Installation docs](https://docs.dagu.sh/getting-started/installation)\n\n### 2. Create your first workflow\n\n\u003e When you first start Dagu with an empty DAGs directory, it automatically creates example workflows. Set `DAGU_SKIP_EXAMPLES=true` to skip this.\n\n```bash\ncat \u003e ./hello.yaml \u003c\u003c 'EOF'\nsteps:\n  - echo \"Hello from Dagu!\"\n  - echo \"Running step 2\"\nEOF\n```\n\n### 3. Run the workflow\n\n```bash\ndagu start hello.yaml\n```\n\n### 4. Check the status\n\n```bash\ndagu status hello\n```\n\n### 5. Explore the Web UI\n\n```bash\ndagu start-all\n```\n\nVisit http://localhost:8080\n\n**Docker Compose:** Clone the repo and run `docker compose -f deploy/docker/compose.minimal.yaml up -d`. See [deployment docs](https://docs.dagu.sh/getting-started/installation) for production setups.\n\n## Workflow Examples\n\n### Sequential Steps\n\nSteps execute one after another:\n\n```yaml\ntype: chain\nsteps:\n  - command: echo \"Hello, dagu!\"\n  - command: echo \"This is a second step\"\n```\n\n```mermaid\n%%{init: {'theme': 'base', 'themeVariables': {'background': '#18181B', 'primaryTextColor': '#fff', 'lineColor': '#888'}}}%%\ngraph LR\n    A[\"Step 1\"] --\u003e B[\"Step 2\"]\n    style A fill:#18181B,stroke:#22C55E,stroke-width:1.6px,color:#fff\n    style B fill:#18181B,stroke:#22C55E,stroke-width:1.6px,color:#fff\n```\n\n### Parallel Steps\n\nSteps with dependencies run in parallel:\n\n```yaml\ntype: graph\nsteps:\n  - id: step_1\n    command: echo \"Step 1\"\n  - id: step_2a\n    command: echo \"Step 2a - runs in parallel\"\n    depends: [step_1]\n  - id: step_2b\n    command: echo \"Step 2b - runs in parallel\"\n    depends: [step_1]\n  - id: step_3\n    command: echo \"Step 3 - waits for parallel steps\"\n    depends: [step_2a, step_2b]\n```\n\n```mermaid\n%%{init: {'theme': 'base', 'themeVariables': {'background': '#18181B', 'primaryTextColor': '#fff', 'lineColor': '#888'}}}%%\ngraph LR\n    A[step_1] --\u003e B[step_2a]\n    A --\u003e C[step_2b]\n    B --\u003e D[step_3]\n    C --\u003e D\n    style A fill:#18181B,stroke:#22C55E,stroke-width:1.6px,color:#fff\n    style B fill:#18181B,stroke:#22C55E,stroke-width:1.6px,color:#fff\n    style C fill:#18181B,stroke:#22C55E,stroke-width:1.6px,color:#fff\n    style D fill:#18181B,stroke:#3B82F6,stroke-width:1.6px,color:#fff\n```\n\n### Docker Step\n\nRun containers as workflow steps:\n\n```yaml\nsteps:\n  - name: build-app\n    container:\n      image: node:20-alpine\n    command: npm run build\n```\n\n### SSH Execution\n\nRun commands on remote machines:\n\n```yaml\nsteps:\n  - name: deploy\n    type: ssh\n    config:\n      host: prod-server.example.com\n      user: deploy\n      key: ~/.ssh/id_rsa\n    command: cd /var/www \u0026\u0026 git pull \u0026\u0026 npm run build\n```\n\n### Sub-DAG Composition\n\nInvoke other DAGs as steps for hierarchical workflows:\n\n```yaml\nsteps:\n  - name: extract\n    call: etl/extract\n    params: \"SOURCE=s3://bucket/data.csv\"\n  - name: transform\n    call: etl/transform\n    params: \"INPUT=${extract.outputs.result}\"\n    depends: [extract]\n  - name: load\n    call: etl/load\n    params: \"DATA=${transform.outputs.result}\"\n    depends: [transform]\n```\n\nFor more examples, see the [Examples](https://docs.dagu.sh/writing-workflows/examples) documentation.\n\n## Features\n\n### Zero-Ops\n\n- Single binary installation, under 128MB memory\n- File-based storage — no PostgreSQL, no Redis, no message brokers\n- Air-gapped / offline capable\n- [Cron scheduling](https://docs.dagu.sh/features/scheduling) with timezone support and zombie detection\n- [High availability](https://docs.dagu.sh/features/scheduling#high-availability) with scheduler failover\n\n### Full-Power\n\n- [Docker executor](https://docs.dagu.sh/features/executors/docker) — run containers as workflow steps\n- [SSH executor](https://docs.dagu.sh/features/executors/ssh) — execute commands on remote machines\n- [Git sync](https://docs.dagu.sh/features/git-sync) — version management for DAG definitions and documents\n- [Hierarchical DAG composition](https://docs.dagu.sh/features/execution-control#parallel-execution) — nest workflows inside workflows\n- [Distributed execution](https://docs.dagu.sh/features/distributed-execution) — coordinator/worker mode across machines\n- [19+ built-in executors](https://docs.dagu.sh/reference/executors) — HTTP, SQL, Redis, S3, jq, mail, archive, and more\n- [RBAC](https://docs.dagu.sh/configurations/authentication) with 5 roles, OIDC, API keys, and audit logging\n- [Human-in-the-loop](https://docs.dagu.sh/writing-workflows/examples) approval gates\n\n### AI-Native\n\n- Built-in [AI agent](https://docs.dagu.sh/features/agent/) — creates, edits, runs, and debugs workflows from natural language\n- [Agent and chat step types](https://docs.dagu.sh/reference/executors) in DAGs with tool calling\n- Multi-provider LLM support (Anthropic, OpenAI, Google Gemini, OpenRouter)\n- Persistent memory, sub-agent delegation, and domain-specific skills\n- Built-in [document management](https://docs.dagu.sh/features/documents) with AI agent integration\n\n\u003e See the [full feature list](https://docs.dagu.sh) for all capabilities.\n\n## Environment Variables\n\n**Note:** Configuration precedence: Command-line flags \u003e Environment variables \u003e Configuration file\n\n### Frontend Server Configuration\n\n| Environment Variable | Default | Description |\n|---------------------|---------|-------------|\n| `DAGU_HOST` | `127.0.0.1` | Web UI server host |\n| `DAGU_PORT` | `8080` | Web UI server port |\n| `DAGU_BASE_PATH` | - | Base path for reverse proxy setup |\n| `DAGU_API_BASE_URL` | `/api/v1` | API endpoint base path |\n| `DAGU_TZ` | - | Server timezone (e.g., `Asia/Tokyo`) |\n| `DAGU_DEBUG` | `false` | Enable debug mode |\n| `DAGU_LOG_FORMAT` | `text` | Log format (`text` or `json`) |\n| `DAGU_HEADLESS` | `false` | Run without Web UI |\n| `DAGU_LATEST_STATUS_TODAY` | `false` | Show only today's latest status |\n| `DAGU_DEFAULT_SHELL` | - | Default shell for command execution |\n| `DAGU_CERT_FILE` | - | TLS certificate file path |\n| `DAGU_KEY_FILE` | - | TLS key file path |\n\n### Path Configuration\n\n| Environment Variable | Default | Description |\n|---------------------|---------|-------------|\n| `DAGU_HOME` | - | Base directory that overrides all path configurations |\n| `DAGU_DAGS_DIR` | `~/.config/dagu/dags` | Directory for DAG definitions |\n| `DAGU_ALT_DAGS_DIR` | - | Additional directory to search for DAG definitions |\n| `DAGU_LOG_DIR` | `~/.local/share/dagu/logs` | Directory for log files |\n| `DAGU_DATA_DIR` | `~/.local/share/dagu/data` | Directory for application data |\n| `DAGU_SUSPEND_FLAGS_DIR` | `~/.local/share/dagu/suspend` | Directory for suspend flags |\n| `DAGU_ADMIN_LOG_DIR` | `~/.local/share/dagu/logs/admin` | Directory for admin logs |\n| `DAGU_BASE_CONFIG` | `~/.config/dagu/base.yaml` | Path to base configuration file |\n| `DAGU_EXECUTABLE` | - | Path to dagu executable |\n| `DAGU_DAG_RUNS_DIR` | `{dataDir}/dag-runs` | Directory for DAG run data |\n| `DAGU_PROC_DIR` | `{dataDir}/proc` | Directory for process data |\n| `DAGU_QUEUE_DIR` | `{dataDir}/queue` | Directory for queue data |\n| `DAGU_SERVICE_REGISTRY_DIR` | `{dataDir}/service-registry` | Directory for service registry |\n\n### Authentication\n\n| Environment Variable | Default | Description |\n|---------------------|---------|-------------|\n| `DAGU_AUTH_MODE` | `builtin` | Authentication mode: `none`, `basic`, or `builtin` |\n| `DAGU_AUTH_BASIC_USERNAME` | - | Basic auth username |\n| `DAGU_AUTH_BASIC_PASSWORD` | - | Basic auth password |\n| `DAGU_AUTH_OIDC_CLIENT_ID` | - | OIDC client ID |\n| `DAGU_AUTH_OIDC_CLIENT_SECRET` | - | OIDC client secret |\n| `DAGU_AUTH_OIDC_CLIENT_URL` | - | OIDC client URL |\n| `DAGU_AUTH_OIDC_ISSUER` | - | OIDC issuer URL |\n| `DAGU_AUTH_OIDC_SCOPES` | - | OIDC scopes (comma-separated) |\n| `DAGU_AUTH_OIDC_WHITELIST` | - | OIDC email whitelist (comma-separated) |\n| `DAGU_AUTH_OIDC_AUTO_SIGNUP` | `false` | Auto-create users on first OIDC login |\n| `DAGU_AUTH_OIDC_DEFAULT_ROLE` | `viewer` | Role for auto-created users |\n| `DAGU_AUTH_OIDC_ALLOWED_DOMAINS` | - | Allowed email domains (comma-separated) |\n| `DAGU_AUTH_OIDC_BUTTON_LABEL` | `Login with SSO` | SSO login button text |\n\n### Builtin Authentication (RBAC)\n\nWhen `DAGU_AUTH_MODE=builtin`, a file-based user management system with role-based access control is enabled. Roles: `admin`, `manager`, `developer`, `operator`, `viewer`. On first startup, visit the web UI to create your admin account via the setup page.\n\n| Environment Variable | Default | Description |\n|---------------------|---------|-------------|\n| `DAGU_AUTH_TOKEN_SECRET` | (auto-generated) | JWT token secret for signing (auto-generated if not set) |\n| `DAGU_AUTH_TOKEN_TTL` | `24h` | JWT token time-to-live |\n| `DAGU_USERS_DIR` | `{dataDir}/users` | Directory for user data files |\n\n### UI Configuration\n\n| Environment Variable | Default | Description |\n|---------------------|---------|-------------|\n| `DAGU_UI_NAVBAR_COLOR` | `#1976d2` | UI header color (hex or name) |\n| `DAGU_UI_NAVBAR_TITLE` | `Dagu` | UI header title |\n| `DAGU_UI_LOG_ENCODING_CHARSET` | `utf-8` | Log file encoding |\n| `DAGU_UI_MAX_DASHBOARD_PAGE_LIMIT` | `100` | Maximum items on dashboard |\n| `DAGU_UI_DAGS_SORT_FIELD` | `name` | Default DAGs sort field |\n| `DAGU_UI_DAGS_SORT_ORDER` | `asc` | Default DAGs sort order |\n\n### Features Configuration\n\n| Environment Variable | Default | Description |\n|---------------------|---------|-------------|\n| `DAGU_TERMINAL_ENABLED` | `false` | Enable web-based terminal |\n| `DAGU_AUDIT_ENABLED` | `true` | Enable audit logging for security events |\n\n### Git Sync Configuration\n\nSynchronize DAG definitions with a Git repository. See [Git Sync](https://docs.dagu.sh/features/git-sync) for details.\n\n| Environment Variable | Default | Description |\n|---------------------|---------|-------------|\n| `DAGU_GITSYNC_ENABLED` | `false` | Enable Git sync |\n| `DAGU_GITSYNC_REPOSITORY` | - | Repository URL (e.g., `github.com/org/repo`) |\n| `DAGU_GITSYNC_BRANCH` | `main` | Branch to sync |\n| `DAGU_GITSYNC_PATH` | `\"\"` | Subdirectory in repo for DAGs |\n| `DAGU_GITSYNC_PUSH_ENABLED` | `true` | Enable push/publish operations |\n| `DAGU_GITSYNC_AUTH_TYPE` | `token` | Auth type: `token` or `ssh` |\n| `DAGU_GITSYNC_AUTH_TOKEN` | - | GitHub PAT for HTTPS auth |\n| `DAGU_GITSYNC_AUTH_SSH_KEY_PATH` | - | SSH private key path |\n| `DAGU_GITSYNC_AUTOSYNC_ENABLED` | `false` | Enable automatic periodic pull |\n| `DAGU_GITSYNC_AUTOSYNC_INTERVAL` | `300` | Auto-sync interval in seconds |\n\n### Scheduler Configuration\n\n| Environment Variable | Default | Description |\n|---------------------|---------|-------------|\n| `DAGU_SCHEDULER_PORT` | `8090` | Health check server port |\n| `DAGU_SCHEDULER_LOCK_STALE_THRESHOLD` | `30s` | Scheduler lock stale threshold |\n| `DAGU_SCHEDULER_LOCK_RETRY_INTERVAL` | `5s` | Lock retry interval |\n| `DAGU_SCHEDULER_ZOMBIE_DETECTION_INTERVAL` | `45s` | Zombie DAG detection interval (0 to disable) |\n| `DAGU_QUEUE_ENABLED` | `true` | Enable queue system |\n\n### Worker Configuration\n\nThis configuration is used for worker instances that execute DAGs. See the [Distributed Execution](https://docs.dagu.sh/features/distributed-execution) documentation for more details.\n\n| Environment Variable | Default | Description |\n|---------------------|---------|-------------|\n| `DAGU_COORDINATOR_ENABLED` | `true` | Enable coordinator service |\n| `DAGU_COORDINATOR_HOST` | `127.0.0.1` | Coordinator gRPC server bind address |\n| `DAGU_COORDINATOR_ADVERTISE` | (auto) | Address to advertise in service registry (default: hostname) |\n| `DAGU_COORDINATOR_PORT` | `50055` | Coordinator gRPC server port |\n| `DAGU_WORKER_ID` | - | Worker instance ID |\n| `DAGU_WORKER_MAX_ACTIVE_RUNS` | `100` | Maximum concurrent runs per worker |\n| `DAGU_WORKER_LABELS` | - | Worker labels (format: `key1=value1,key2=value2`, e.g., `gpu=true,memory=64G`) |\n| `DAGU_SCHEDULER_PORT` | `8090` | Scheduler health check server port |\n| `DAGU_SCHEDULER_LOCK_STALE_THRESHOLD` | `30s` | Time after which scheduler lock is considered stale |\n| `DAGU_SCHEDULER_LOCK_RETRY_INTERVAL` | `5s` | Interval between lock acquisition attempts |\n\n### Peer Configuration\n\nThis configuration is used for communication between coordinator services and other services (e.g., scheduler, worker, web UI). See the [Distributed Execution](https://docs.dagu.sh/features/distributed-execution) documentation for more details.\n\n| Environment Variable | Default | Description |\n|---------------------|---------|-------------|\n| `DAGU_PEER_CERT_FILE` | - | Peer TLS certificate file |\n| `DAGU_PEER_KEY_FILE` | - | Peer TLS key file |\n| `DAGU_PEER_CLIENT_CA_FILE` | - | Peer CA certificate file for client verification |\n| `DAGU_PEER_SKIP_TLS_VERIFY` | `false` | Skip TLS certificate verification for peer connections |\n| `DAGU_PEER_INSECURE` | `true` | Use insecure connection (h2c) instead of TLS |\n\n## Documentation\n\nFull documentation at [docs.dagu.sh](https://docs.dagu.sh/).\n\n- [Getting Started](https://docs.dagu.sh/getting-started/installation) — Installation and first workflow\n- [Examples](https://docs.dagu.sh/writing-workflows/examples) — Feature walkthroughs with YAML samples\n- [AI Agent](https://docs.dagu.sh/features/agent/) — Built-in AI assistant for workflow management\n- [Distributed Execution](https://docs.dagu.sh/features/distributed-execution) — Coordinator/worker setup\n- [Configuration](https://docs.dagu.sh/configurations/reference) — Environment variables and settings\n- [Changelog](https://docs.dagu.sh/reference/changelog) — Recent updates and releases\n\n## Community\n\n- Chat with us on [Discord](https://discord.gg/gpahPUjGRk)\n- File bugs and feature requests on [GitHub Issues](https://github.com/dagu-org/dagu/issues)\n- Follow us on [Bluesky](https://bsky.app/profile/dagu-org.bsky.social)\n\n## Development\n\n**Prerequisites:** [Go 1.26+](https://go.dev/doc/install), [Node.js](https://nodejs.org/en/download/), [pnpm](https://pnpm.io/installation)\n\n```bash\ngit clone https://github.com/dagu-org/dagu.git \u0026\u0026 cd dagu\nmake build\n```\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for development workflow, testing, and code standards.\n\n## Acknowledgements\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch3\u003ePremium Sponsors\u003c/h3\u003e\n  \u003ca href=\"https://github.com/slashbinlabs\"\u003e\n    \u003cimg src=\"https://wsrv.nl/?url=https%3A%2F%2Fgithub.com%2Fslashbinlabs.png\u0026w=150\u0026h=150\u0026fit=cover\u0026mask=circle\" width=\"100\" height=\"100\" alt=\"@slashbinlabs\"\u003e\n  \u003c/a\u003e\n\n  \u003ch3\u003eSupporters\u003c/h3\u003e\n  \u003ca href=\"https://github.com/disizmj\"\u003e\n    \u003cimg src=\"https://wsrv.nl/?url=https%3A%2F%2Fgithub.com%2Fdisizmj.png\u0026w=128\u0026h=128\u0026fit=cover\u0026mask=circle\" width=\"50\" height=\"50\" alt=\"@disizmj\" style=\"margin: 5px;\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/Arvintian\"\u003e\n    \u003cimg src=\"https://wsrv.nl/?url=https%3A%2F%2Fgithub.com%2FArvintian.png\u0026w=128\u0026h=128\u0026fit=cover\u0026mask=circle\" width=\"50\" height=\"50\" alt=\"@Arvintian\" style=\"margin: 5px;\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/yurivish\"\u003e\n    \u003cimg src=\"https://wsrv.nl/?url=https%3A%2F%2Fgithub.com%2Fyurivish.png\u0026w=128\u0026h=128\u0026fit=cover\u0026mask=circle\" width=\"50\" height=\"50\" alt=\"@yurivish\" style=\"margin: 5px;\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/jayjoshi64\"\u003e\n    \u003cimg src=\"https://wsrv.nl/?url=https%3A%2F%2Fgithub.com%2Fjayjoshi64.png\u0026w=128\u0026h=128\u0026fit=cover\u0026mask=circle\" width=\"50\" height=\"50\" alt=\"@jayjoshi64\" style=\"margin: 5px;\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/alangrafu\"\u003e\n    \u003cimg src=\"https://wsrv.nl/?url=https%3A%2F%2Fgithub.com%2Falangrafu.png\u0026w=128\u0026h=128\u0026fit=cover\u0026mask=circle\" width=\"50\" height=\"50\" alt=\"@alangrafu\" style=\"margin: 5px;\"\u003e\n  \u003c/a\u003e\n\n  \u003cbr/\u003e\u003cbr/\u003e\n\n  \u003ca href=\"https://github.com/sponsors/dagu-org\"\u003e\n    \u003cimg src=\"https://img.shields.io/static/v1?label=Sponsor\u0026message=%E2%9D%A4\u0026logo=GitHub\u0026color=%23fe8e86\" width=\"150\" alt=\"Sponsor\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n## Contributing\n\nWe welcome contributions of all kinds. See our [Contribution Guide](./CONTRIBUTING.md) for details.\n\n\u003ca href=\"https://github.com/dagu-org/dagu/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=dagu-org/dagu\" /\u003e\n\u003c/a\u003e\n\n## License\n\nGNU GPLv3 - See [LICENSE](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdagu-org%2Fdagu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdagu-org%2Fdagu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdagu-org%2Fdagu/lists"}