LangGraph विकल्प

एजेंट वर्कफ़्लो के लिए रनटाइम, आपकी ऐप के भीतर एक लाइब्रेरी नहीं।

LangGraph कोड में एजेंट ग्राफ़ व्यक्त करने का अच्छा तरीका है। Dagu वह परत है जो उसे चलाती है: एक अकेली सेल्फ़-होस्टेड बाइनरी जिसमें वर्कफ़्लो YAML है, एजेंट सामान्य स्टेप हैं, और शेड्यूल, कतारें, retries, टिकाऊ ठहराव तथा रन इतिहास इंजन से आते हैं, उस ऐप्लिकेशन से नहीं जो आप उसके चारों ओर लिखते हैं।

शेड्यूल किया गया एजेंट वर्कफ़्लो, चारों ओर कुछ भी नहीं
# triage.yaml
schedule: "*/15 * * * *"
max_active_runs: 1

steps:
  - id: fetch
    run: ./scripts/fetch-new-issues.sh
    output: ISSUES

  - id: classify
    action: harness.run
    with:
      provider: claude
      prompt: Classify each issue in ${ISSUES}. Return JSON.
    output_schema: schemas/triage.json
    retry_policy:
      limit: 3
      interval_sec: 30
    depends: [fetch]

  - id: apply_labels
    run: ./scripts/apply-labels.sh
    depends: [classify]

वर्कफ़्लो YAML हैं, ऐप्लिकेशन कोड नहीं

स्टेप प्रोसेस हैं, इसलिए कोई भी भाषा या CLI चलती है

शेड्यूल, कतारें, retries और इतिहास बाइनरी के साथ ही आते हैं

प्रतीक्षारत रन प्रोसेस छोड़ देता है और बाद में फिर शुरू होता है

At a glance

चलाने वालों की नज़र से LangGraph और Dagu

स्वरूप
Dagu

एक वर्कफ़्लो इंजन जिसे आप बाइनरी की तरह चलाते हैं।

LangGraph

एक लाइब्रेरी जिसे Python या JavaScript ऐप्लिकेशन में जोड़ा जाता है।

परिभाषा
Dagu

घोषणात्मक YAML, उसी कोड के साथ वर्ज़न किया जाता है जिसे वह चलाता है।

LangGraph

ऐप्लिकेशन कोड के भीतर ग्राफ़ का निर्माण।

संचालन
Dagu

शेड्यूल, कतारें, retries, artifacts और रन इतिहास इंजन के साथ आते हैं।

LangGraph

Checkpointer ग्राफ़ की स्थिति सहेजते हैं; शेड्यूलिंग और सेवा देना आपकी सेवा या LangGraph Platform के ज़िम्मे है।

काम की इकाई
Dagu

एक प्रोसेस: कोई भी भाषा, कोई भी CLI, ज़रूरत हो तो कंटेनर के भीतर।

LangGraph

होस्ट प्रोसेस के भीतर एक फ़ंक्शन।

In depth

Where each tool fits

01

लाइब्रेरी को ऐप्लिकेशन चाहिए। इंजन को नहीं।

LangGraph ग्राफ़ बनाता है। फिर भी किसी को उसे शेड्यूल करना, कतार में लगाना, दोबारा चलाना, स्थिति सहेजना और यह दिखाना पड़ता है कि क्या हुआ। वह कोई या तो आपकी लिखी सेवा है या LangGraph Platform। Dagu पहले से ही वही परत है।

  • एक बाइनरी चलाइए। न कोई वेब सेवा लिखनी है, न worker pool डिज़ाइन करना है
  • शेड्यूल, कतारें, retries और रन इतिहास इंजन की क्षमताएँ हैं, जोड़े गए इंटीग्रेशन नहीं
  • वही परिभाषा लैपटॉप पर, एक VM पर, या coordinator और workers पर चलती है
02

स्टेप प्रोसेस हैं, इसलिए वर्कफ़्लो किसी भाषा से बँधा नहीं

LangGraph के नोड आपके प्रोसेस में चलने वाले Python या JavaScript फ़ंक्शन हैं। Dagu का स्टेप एक कमांड है, इसलिए काम की इकाई वही है जो आपके परिवेश में पहले से चलती है।

  • एक ही वर्कफ़्लो से shell स्क्रिप्ट, बाइनरी, कंटेनर, SSH कमांड, HTTP endpoint और SQL बुलाइए
  • harness.run से coding agents चलाइए: Claude, Codex, Gemini, OpenCode या कोई आंतरिक CLI
  • किसी भी स्टेप को स्पष्ट mounts, toolchain और egress नियमों वाला कंटेनर sandbox दीजिए
03

जब ग्राफ़ खींच सकें तब खींचिए, जब न खींच सकें तब क्रम सौंप दीजिए

LangGraph हर रास्ता खींचने को कहता है, जो तब तक ठीक है जब तक क्रम इस पर निर्भर न होने लगे कि समीक्षक ने क्या कहा। Dagu type: graph को डिफ़ॉल्ट रखता है और उस काम के लिए type: controller जोड़ता है जो कभी एक ग्राफ़ में समाया ही नहीं।

  • Controller वर्कफ़्लो पूर्णता की शर्तें घोषित करता है और अगला action मॉडल चुनता है
  • मॉडल केवल घोषित स्टेप में से चुनता है, इसलिए प्रभाव क्षेत्र वही फ़ाइल है
  • दोनों प्रकार एक ही रन देते हैं, वही लॉग, retries, artifacts और इतिहास

FAQ

Practical questions before adopting Dagu

क्या Dagu LangGraph की सीधी जगह ले लेता है?

नहीं। दोनों अलग परतों पर हैं। अगर आप Python या JavaScript में मॉडल कॉल जोड़ना और ग्राफ़ की स्थिति पर बारीक नियंत्रण चाहते हैं तो LangGraph उपयुक्त है। Dagu तब बेहतर है जब काम कमांड और एजेंट CLI का समूह हो जिसे शेड्यूल, retries, अनुमोदन और ऑडिट निशान चाहिए।

क्या Dagu के भीतर LangGraph इस्तेमाल करते रह सकते हैं?

हाँ। LangGraph ऐप्लिकेशन को स्क्रिप्ट या कंटेनर के रूप में रखिए और उसे एक स्टेप की तरह चलाइए। उसके चारों ओर शेड्यूल, retry नीति, लॉग, artifacts और रन इतिहास Dagu देता है।

Dagu human-in-the-loop को कैसे संभालता है?

Human tasks, और controller वर्कफ़्लो के भीतर ask_user, रन को टिकाऊ ढंग से रोक देते हैं। प्रोसेस समाप्त होता है, worker slot मुक्त होता है, और किसी के उत्तर देते ही रन नए प्रोसेस पर फिर शुरू हो जाता है।

क्या Dagu को डेटाबेस चाहिए?

नहीं। Dagu एक अकेली बाइनरी है जो परिभाषाएँ, रन इतिहास और लॉग फ़ाइलों के रूप में रखती है, इसलिए पहले रन से पहले न कोई metadata डेटाबेस चलाना है, न message broker।

Next step

Start with one workflow.

Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.