Dagu: Điều Phối Workflow Tự Triển Khai
Dagu là một workflow orchestrator tự triển khai, chạy trên một tệp nhị phân Go duy nhất, không cần cơ sở dữ liệu riêng, dành cho đội nhóm có công việc chính không phải là điều phối workflow. Nó bọc lịch chạy, thử lại, và phê duyệt quanh script bạn đã có, thay vì viết lại thành mã framework. Hãy chọn Dagu thay vì Airflow nếu muốn vậy mà không cần dựng cả scheduler cộng cơ sở dữ liệu; bỏ qua nếu tổ chức bạn không chấp nhận giấy phép GPL-3.0.
Dagu Là Gì?
Dagu là một workflow engine hướng tới tự động hoá vận hành và các tác vụ vận hành có hỗ trợ AI, đóng gói thành một tệp thực thi tự triển khai kèm Web UI riêng, không cần cơ sở dữ liệu ngoài để chạy. Pipeline được định nghĩa dưới dạng DAG bằng YAML khai báo thay vì mã theo framework, và mỗi bước có thể là một lệnh shell, một container Docker, một Kubernetes Job, một lệnh SSH, hoặc một CLI coding-agent bên ngoài được gọi qua harness.run.
Năng Lực Cốt Lõi Của Dagu
- ✓DAG bằng YAML khai báo: thứ tự, dependency, thử lại, lịch chạy, và phê duyệt nằm trong một tệp cạnh script, không nằm trong decorator của một framework.
- ✓Không cần cơ sở dữ liệu để chạy: Dagu lưu trạng thái, log, và hàng đợi chạy trong tệp cục bộ, nên không có gì thêm cần cấp phát hay vá lỗi.
- ✓MCP server tích hợp sẵn: HTTP server đang chạy cung cấp một endpoint MCP với các công cụ dagu_read, dagu_change, và dagu_execute để agent kiểm tra và điều khiển các lượt chạy.
- ✓Harness cho CLI coding-agent bên ngoài: hành động harness.run chạy các CLI như Claude Code, Codex, Gemini CLI, Pi, hoặc OpenCode như một bước, kết quả được lưu thành artifact.
- ✓Bước cần con người phê duyệt: một lượt chạy có thể tạm dừng để chờ xem xét thủ công trước khi tiếp tục, quan trọng với việc mà bạn không muốn để bot tự quyết.
- ✓Ghim phiên bản và cache công cụ: khối tools cài đặt phiên bản CLI cụ thể cho từng worker qua nhà cung cấp aqua, có thể ghim tới package@version#sha256.
- ✓Ba chế độ chạy: standalone (một tiến trình đảm nhiệm UI, scheduler, và executor), coordinator/worker (công việc được gửi qua gRPC tới các worker theo nhãn), và headless cho CI/CD.
- ✓Che thông tin bí mật: giá trị lấy từ nhà cung cấp đã khai báo được tự động che khỏi log và Web UI.
Ứng Dụng Thực Tế Của Dagu
- •Pipeline ETL và dữ liệu: bọc script trích xuất, câu truy vấn SQL, và lệnh dbt trong một DAG để lỗi được thử lại và mỗi lượt chạy để lại log thay vì một lần cron thất bại âm thầm.
- •Thay thế chuỗi cron rối rắm: biến các công việc theo lịch phụ thuộc lẫn nhau thành một DAG có UI, thử lại, và thông báo thay vì một đống script bash không ai muốn đụng vào.
- •Chuyển mã video: chạy các tác vụ ffmpeg như từng bước và chia tải chuyển mã ra nhiều worker thay vì dồn hết vào một máy.
- •Tự động hoá máy chủ qua SSH: giữ kết quả lệnh từ xa, kết quả xử lý, và thông báo ở một chỗ thay vì rải rác trong lịch sử shell.
- •Công việc container và Kubernetes: chạy container Docker hoặc Kubernetes Job như các bước trong workflow mà không cần tự xây control plane riêng.
- •Tự phục vụ cho đội hỗ trợ: cho phép người không phải kỹ sư kích hoạt các workflow chẩn đoán hoặc truy vấn cơ sở dữ liệu đã được duyệt trước, mà không cần mở ticket cho đội kỹ thuật.
Bắt Đầu Với Dagu
Dagu cài đặt được qua script curl trên macOS/Linux, qua Homebrew, qua npm (npm install -g --ignore-scripts=false @dagucloud/dagu), qua script PowerShell trên Windows, dưới dạng image Docker, hoặc qua Helm chart trên Kubernetes. Trình cài đặt shell/PowerShell chạy một trình hướng dẫn có thể thêm Dagu vào PATH, đăng ký nó như một dịch vụ nền, và tạo tài khoản quản trị; các đường cài đặt qua Homebrew, npm, Docker, và Helm bỏ qua trình hướng dẫn đó. Để thử nhanh, tạo một tệp hello.yaml với một bước (run: echo "hello from Dagu") rồi chạy dagu start hello.yaml. Để chạy đầy đủ server và giao diện, chạy dagu start-all --dags . rồi mở localhost:8080.
Điểm mạnh
- ✓Một tệp nhị phân duy nhất, không phụ thuộc ngoài: không cần Postgres, không cần Redis, không cần môi trường Python phải vá lỗi chỉ để chạy một lịch trình.
- ✓Script vẫn là script. Xoá tệp YAML thì chúng vẫn chạy y như trước, vì Dagu không bao giờ được import vào mã nguồn.
- ✓Hỗ trợ MCP có sẵn từ đầu chứ không phải gắn thêm: dagu_read, dagu_change, và dagu_execute cho bất kỳ agent hỗ trợ MCP nào quyền điều khiển thật sự với các lượt chạy.
- ✓Phê duyệt và che thông tin bí mật có sẵn ngay trong Dagu, nên bước xem xét thủ công và xử lý thông tin xác thực không cần thêm công cụ ngoài.
- ✓Chạy được ở bất cứ đâu dữ liệu đang nằm, tại chỗ, air-gapped, edge, hay cloud, vì không có gì phụ thuộc vào việc kết nối tới một dịch vụ được quản lý.
Cân Nhắc Trước Khi Dùng Dagu
- △Dagu dùng giấy phép GPL-3.0, một giấy phép copyleft mạnh, đáng để kiểm tra với chính sách công ty bạn trước khi xây công cụ nội bộ dựa trên nó.
- △SSO, RBAC, audit logging, và tích hợp SaaS xử lý sự cố nằm sau một giấy phép self-host trả phí; bản cộng đồng miễn phí để bạn tự lo các kiểm soát đó.
- △Việc cache kết quả theo từng bước dành cho build workflow hiện chỉ chạy cục bộ, nên khả năng tái sử dụng đó chưa mở rộng ra các worker phân tán.
- △README không nêu số phiên bản hay lịch sử phát hành, và không nêu tên khách hàng sản xuất cụ thể nào ngoài các con số thông lượng chung được đưa ra.
- △Không có SDK ngôn ngữ riêng: mọi bước đều gọi một lệnh shell, một container, hoặc harness CLI, nên sẽ không hợp với ai muốn hàm tác vụ gốc thay vì YAML cộng lệnh gọi tiến trình con.
Lựa Chọn Thay Thế Và So Sánh Với Dagu
Câu Hỏi Thường Gặp
Mã nguồn của Dagu là mã nguồn mở theo giấy phép GPL-3.0, và bản tự triển khai cho cộng đồng không cần license key để chạy. Một giấy phép self-host trả phí riêng bổ sung SSO, RBAC, audit logging, và tích hợp SaaS xử lý sự cố.
Dagu chạy độc lập, với trạng thái, log, và hàng đợi chạy được lưu trong tệp cục bộ trên chính máy chạy nó, nên không cần cơ sở dữ liệu ngoài hay broker nào.
Các bước trong Dagu có thể chạy lệnh shell, container Docker, Kubernetes Job, lệnh từ xa qua SSH, và CLI coding-agent bên ngoài qua harness.run, cùng bất cứ gì được bọc thành một Dagu Action.
Dagu cung cấp một MCP server tích hợp sẵn với các công cụ dagu_read, dagu_change, và dagu_execute, cho phép bất kỳ agent hỗ trợ MCP nào kiểm tra, chỉnh sửa, và khởi chạy workflow trực tiếp.
README của Dagu nói một máy đơn có thể xử lý hàng nghìn lượt chạy workflow mỗi ngày, cùng chế độ worker phân tán khi một node không đủ; công suất thực tế vẫn phụ thuộc vào CPU, bộ nhớ, và hình dạng workflow của bạn.
Dagu có sẵn tính năng quản lý thông tin bí mật, lấy giá trị từ nhà cung cấp đã khai báo và tự động che chúng khỏi log cùng Web UI, để thông tin xác thực không lộ ra ngoài kết quả chạy.
Vấn đề Dagu giải quyết
Những đội nhóm chỉ cần vài script chạy theo lịch và được theo dõi thường phải chọn giữa cron, vốn không ghi lại gì ngoài mã thoát (exit code), và Airflow, nghĩa là phải vận hành một scheduler, một cơ sở dữ liệu metadata, và một đội worker chỉ để chạy vài công việc, chưa kể phải viết lại các script đó thành mã theo khuôn khổ framework. Bạn chỉ muốn một lịch chạy, không phải một nền tảng. Câu trả lời của Dagu là để script vẫn là script, rồi bọc lịch chạy, thử lại, và lịch sử quanh chúng trong một tệp YAML và một tiến trình duy nhất, thay vì thêm hẳn một hệ thống thứ hai để vận hành.
Ai nên dùng — và ai nên bỏ qua
Hãy thử Dagu nếu bạn đang duy trì một đống cron job, script SSH, hoặc tự động hoá tuỳ ý và muốn có dependency, thử lại, và Web UI mà không cần dựng cả cơ sở dữ liệu metadata cùng đội worker của Airflow, đặc biệt nếu một agent AI cần kích hoạt hoặc kiểm tra các lượt chạy đó qua MCP. Bỏ qua nếu bạn cần một hệ sinh thái tích hợp dựng sẵn trưởng thành, muốn đảm bảo durable execution có sẵn trong một SDK ngôn ngữ như Temporal cung cấp, hoặc tổ chức của bạn không thể chấp nhận mã nguồn theo giấy phép GPL-3.0.
Repo liên quan
Chưa chắc dagu có hợp với bạn?
Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về dagu.
