<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="382326" data-post-id="382326">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="rengler33" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  rengler33
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Really excited to see this. Airflow always felt like too much software for my simple self-hosting needs.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="382326" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gust-a-task-orchestration-system-built-in-elixir/73628/32">Post #31</a>
	                </div>
	            </div>
              <div id="likers-container-382326" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="382326"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #31"></div>
  </section>
</div>
    <div class="postbit" id="382328" data-post-id="382328">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="marciok" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/marciok/120/39608_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  marciok
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi! Yes, I’ve checked <strong>durable</strong>, both parse and run durable workflows. However, <strong>Gust</strong> has some key differences:</p>
<ul>
<li>Is UI centric: Dashboard with graphs, errors, logs, code, and other things like editing secrets and runs.</li>
<li>It’s not a proof of concept; I am using on production, multiple nodes, and it has a good amount of test coverage.</li>
</ul>
<p>Overall, they’re alternative approaches to the same problem. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="382328" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gust-a-task-orchestration-system-built-in-elixir/73628/33">Post #32</a>
	                </div>
	            </div>
              <div id="likers-container-382328" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="382328"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #32"></div>
  </section>
</div>
    <div class="postbit" id="382329" data-post-id="382329">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ghannam80" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ghannam80/120/35232_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ghannam80
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi,</p>
<p>I saw it had live log update in the UI but I wonder if it track the log per run as this might be important for audit purposes ?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="382329" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gust-a-task-orchestration-system-built-in-elixir/73628/34">Post #33</a>
	                </div>
	            </div>
              <div id="likers-container-382329" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="382329"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #33"></div>
  </section>
</div>
    <div class="postbit" id="384814" data-post-id="384814">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="marciok" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/marciok/120/39608_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  marciok
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi there, sorry for the wait!</p>
<p>Yes, it tracks the logs per run and attempts! You can see here, there’s a log level, attempt (a run can have many tries), and its content: <a href="https://camo.githubusercontent.com/cf1111c6e13cd7d71ac7ac6ec31e115a648b5da12ec0da18110946f01a6423ee/68747470733a2f2f677573742d6769746875622e73332e75732d656173742d312e616d617a6f6e6177732e636f6d2f677573742d73732d322e706e67" rel="noopener nofollow ugc">https://camo.githubusercontent.com/cf1111c6e13cd7d71ac7ac6ec31e115a648b5da12ec0da18110946f01a6423ee/68747470733a2f2f677573742d6769746875622e73332e75732d656173742d312e616d617a6f6e6177732e636f6d2f677573742d73732d322e706e67</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="384814" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gust-a-task-orchestration-system-built-in-elixir/73628/35">Post #34</a>
	                </div>
	            </div>
              <div id="likers-container-384814" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="384814"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #34"></div>
  </section>
</div>
    <div class="postbit" id="384816" data-post-id="384816">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="marciok" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/marciok/120/39608_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  marciok
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi there!</p>
<p>There’s a major update on the project: It now supports DAGs in Python!</p>
<p>Since the start of this project, I’ve always wanted to bring over some of my legacy Python DAGs without having to rewrite them. Also, it’s a great way for people outside the Elixir community to experience the power of OTP without needing to adopt a new language <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<aside class="onebox githubfolder" data-onebox-src="https://github.com/marciok/gust/tree/main/apps/gust_py">
  <header class="source">
      <img src="https://github.githubassets.com/favicons/favicon.svg" class="site-icon" alt="" width="32" height="32">

      <a href="https://github.com/marciok/gust/tree/main/apps/gust_py" target="_blank" rel="noopener nofollow ugc">github.com</a>
  </header>

  <article class="onebox-body">
    <h3><a href="https://github.com/marciok/gust/tree/main/apps/gust_py" target="_blank" rel="noopener nofollow ugc">gust/apps/gust_py at main · marciok/gust</a></h3>

  <p><a href="https://github.com/marciok/gust/tree/main/apps/gust_py" target="_blank" rel="noopener nofollow ugc">main/apps/gust_py</a></p>

  <p><span class="label1">A Task-Based Workflow Orchestration Engine. Contribute to marciok/gust development by creating an account on GitHub.</span></p>

  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

<p>Enjoy!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="384816" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gust-a-task-orchestration-system-built-in-elixir/73628/36">Post #35</a>
	                </div>
	            </div>
              <div id="likers-container-384816" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="384816"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #35"></div>
  </section>
</div>
    <div class="postbit" id="387101" data-post-id="387101">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="marciok" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/marciok/120/39608_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  marciok
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi, it’s me again!</p>
<p>Announcing MCP Server + SKILLS to ease DAG management with AI</p>
<p>Check it out:</p>
<p><a href="https://github.com/marciok/gust?tab=readme-ov-file#mcp-server" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/marciok/gust?tab=readme-ov-file#mcp-server</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387101" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gust-a-task-orchestration-system-built-in-elixir/73628/37">Post #36</a>
	                </div>
	            </div>
              <div id="likers-container-387101" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387101"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #36"></div>
  </section>
</div>
    <div class="postbit" id="393328" data-post-id="393328">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="saleyn" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/saleyn/120/24434_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  saleyn
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/marciok" rel="nofollow">@marciok</a>, is there a way to execute tasks on a pool of worker nodes?  Alternatively, Airflow allows to spin K8s pods on demand for a job. I wonder if the same approach can be used with Gust. E.g.:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">from datetime import datetime
from airflow import DAG
from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator

with DAG(
  dag_id="ondemand_pod_example",
  start_date=datetime(2026, 1, 1),
  schedule=None,
  catchup=False,
) as dag:

  run_script_in_pod = KubernetesPodOperator(
    task_id="run_custom_image",
    name="airflow-dynamic-pod",
    namespace="airflow",
    image="python:3.11-slim",
    cmds=["python", "-c"],
    arguments=["print('Hello from an on-demand pod!')"],
    get_logs=True,
    is_delete_operator_pod=True, # Automatically deletes the pod when done
  )
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="393328" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gust-a-task-orchestration-system-built-in-elixir/73628/38">Post #37</a>
	                </div>
	            </div>
              <div id="likers-container-393328" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="393328"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #37"></div>
  </section>
</div>
    <div class="postbit" id="393333" data-post-id="393333">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="marciok" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/marciok/120/39608_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  marciok
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi! Thanks for your question.</p>
<p>For some context: Gust workers pool claims the whole run and executes its tasks by spinning up dynamic processes for each of them. Once the task is over, the processes are stopped (the run is finished).</p>
<p>If you need, for example, a run to be performed on a specific worker, let’s say that is on a GPU-enabled node. This could be easily implemented by changing <a href="https://github.com/marciok/gust/blob/b25f9db9b59d65e176bae60fb00c80cf0c769686/apps/gust/lib/gust/run/claim/repo.ex#L24" rel="noopener nofollow ugc">the run claimer</a> code to enable specific rules, ex: “claim only runs where <code>GPU=true</code>”</p>
<p>Overall, it can be done per DAG run, not for a specific task. If you really need per task, one could do it like Airflow and call the K8s API within Gust’s task body.</p>
<p>Could you elaborate more on what is the use case that you’re thinking of? I’d love to help.</p>
<p>Best!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="393333" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gust-a-task-orchestration-system-built-in-elixir/73628/39">Post #38</a>
	                </div>
	            </div>
              <div id="likers-container-393333" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="393333"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #38"></div>
  </section>
</div>
    <div class="postbit" id="393364" data-post-id="393364">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="saleyn" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/saleyn/120/24434_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  saleyn
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Please forgive my ignorance if I missed this in the docs, but I couldn’t find the relevant details on if the DUG or the tasks within can run not on the same node that is running Gust but on different ones, customizing the resources given. E.g. for ML-related tasks to chose nodes that have GPUs; for some data scraping jobs to pick nodes that have local storage with relevant data, etc.  Is this doable?</p>
<p>Also if there are many DAGs is it possible to balance their execution by scaling Gust horizontally?</p>
<p>If you could expand the documentation with these examples, it would be super helpful.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="393364" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gust-a-task-orchestration-system-built-in-elixir/73628/40">Post #39</a>
	                </div>
	            </div>
              <div id="likers-container-393364" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="393364"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #39"></div>
  </section>
</div>
    <div class="postbit" id="393380" data-post-id="393380">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="marciok" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/marciok/120/39608_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  marciok
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>No worries! Yep, it’s missing more in-depth detail on how Gust works internally; I’ll include it in the docs.</p>
<p>Regarding the feature to specify what type of worker the DAG should run on, I opened an issue, and I’m planning to add into the next release: <a href="https://github.com/marciok/gust/issues/139" class="inline-onebox" rel="noopener nofollow ugc">Route DAG runs to nodes by capability · Issue #139 · marciok/gust · GitHub</a>.</p>
<p>Feel free to leave any comments!</p>
<p>Best!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="393380" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gust-a-task-orchestration-system-built-in-elixir/73628/41">Post #40</a>
	                </div>
	            </div>
              <div id="likers-container-393380" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="393380"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>