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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="garrison" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  garrison
                    <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>Alas, it’s even more absurd than that: they have both an o4-mini and a 4o-mini. Hope none of their customers are dyslexic!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="365634" 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/is-anyone-working-on-ai-agents-in-elixir/69989/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-365634" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="365634"
                     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 #21"></div>
  </section>
</div>
    <div class="postbit" id="369366" data-post-id="369366">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve been following the development of Koog (<a href="https://github.com/JetBrains/koog" rel="noopener nofollow ugc">https://github.com/JetBrains/koog</a>) in the Kotlin ecosystem, and it strikes me as a very sensible approach for building agents. The framework adds several interesting layers that really speed up agent development, such as native support for complex workflows, easy integration with different LLMs (OpenAI, Google, Anthropic, etc.), custom tool creation, and efficient management of agent memory and context.</p>
<p>Just sharing this here as a reference—for anyone building this kind of tooling in Elixir, Koog might be an additional source of inspiration.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="369366" 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/is-anyone-working-on-ai-agents-in-elixir/69989/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-369366" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="369366"
                     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 #22"></div>
  </section>
</div>
    <div class="postbit" id="385116" data-post-id="385116">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="mikehostetler" data-post="11" data-topic="69989">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mikehostetler/48/20620_2.png" class="avatar"> mikehostetler:</div>
<blockquote>
<p>I really struggle to answer whether they are better with Jido or not. Long term - a few GenServers that wrap <code>req</code> calls to LLM API’s are better.</p>
</blockquote>
</aside>
<p>Curious, what are your thoughts now?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="385116" 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/is-anyone-working-on-ai-agents-in-elixir/69989/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-385116" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="385116"
                     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 #23"></div>
  </section>
</div>
    <div class="postbit" id="385117" data-post-id="385117">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="jam" data-post="24" data-topic="69989">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jam/48/36266_2.png" class="avatar"> jam:</div>
<blockquote>
<p>Curious, what are your thoughts now?</p>
</blockquote>
</aside>
<p>Great time for a followup!!!</p>
<p>I really should turn this into longer content, but I’ll touch on a few points with the plan to expand later.</p>
<blockquote>
<p>a simple LLM wrapper doesn’t need a sophisticated agent framework - Oban works great</p>
</blockquote>
<p>This isn’t as true anymore. The complexity of stateful LLM interaction using the latest techniques like parallel tool calling, prompt caching and multi-modal generation have made the simple complex.  Even little things like maintaining the same Tool ID across calls is a PITA.  ReqLLM and Jido have solved most of this so I don’t think about it anymore.</p>
<blockquote>
<p>Most agent implementations are really really simplistic</p>
</blockquote>
<p>Still mostly true - when someone says “Agent” they can mean several different things.  Most though are pretty simple.  That’s changing though - projects like <a href="https://openclaw.ai/" rel="noopener nofollow ugc">OpenClaw</a> and <a href="https://paperclip.ing/" rel="noopener nofollow ugc">Paperclip</a> are demonstrating that the complexity of Agent Systems is climbing rapidly.  The majority of devs are not there yet. Sophisticated multi-agent systems are MUCH easier to build on the BEAM - so I think this will grow.</p>
<blockquote>
<p>While implementing Jido, I learned a <strong>lot</strong> about OTP</p>
</blockquote>
<p>I’ve largely climbed this curve and there have been a few contributors that really helped me.  I’m now really happy with the Jido 2.0 implementation - specifically the addition of <em>Strategies</em> to control the logic flow.  That one decision was the game changer that opened up the world I originally envisioned and ended up simplifying the Jido model.  It ended up being more idiomatic Elixir/OTP as well - which was a great benefit.</p>
<p>The evidence here is how easy it has been to extend Jido into other OTP areas like clustering and data persistence.  The stuff people are building on top of Jido is WILD.</p>
<p>Is this totally done? Haha, definitely not - but I personally much happier with the model.</p>
<blockquote>
<p>While it’s easy to write an run 10,000 agents with Jido - it’s not that useful</p>
</blockquote>
<p>This is changing.  Now that we have been doing AI for two years, I view it not as an LLM / AI revolution but a change in how we organize problems to be solved with LLM’s as helpers.  It’s about defining the shape of the problem correctly.  Jido gives us a better toolbox to do that.</p>
<hr>
<p>Building Jido has been a journey. I’m much happier with it now then I was last year and I’m really enjoying it.  I still don’t know where this is all going - but I’m glad to be working it out with everyone else in this space!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="385117" data-batch-url="/posts/batch_likers">
                        6
                      </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/is-anyone-working-on-ai-agents-in-elixir/69989/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-385117" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="385117"
                     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 #24"></div>
  </section>
</div>
    <div class="postbit" id="391710" data-post-id="391710">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yeah, currently I work for a company that uses AI to build “digital twins” or “synthetic users” based on real user surveys so we have been using AI agents to impersonate real behaviour, I created a library in elixir to help us deal with different AI providers and use Agents like “Elixir Processes”. It supports <strong>4 multi-agent patterns</strong>  Subagents, Skills, Handoffs, Router. We use it in production here and has been working for us.</p>
<aside class="onebox githubrepo" data-onebox-src="https://github.com/tiagodavi/ex_agent">
  <header class="source">

      <a href="https://github.com/tiagodavi/ex_agent" target="_blank" rel="noopener nofollow ugc">github.com</a>
  </header>

  <article class="onebox-body">
    <div class="github-row" data-github-private-repo="false">
  <img width="690" height="344" src="https://opengraph.githubassets.com/43f33edc82eb04d577808490c1a914fd/tiagodavi/ex_agent" class="thumbnail">

  <h3><a href="https://github.com/tiagodavi/ex_agent" target="_blank" rel="noopener nofollow ugc">GitHub - tiagodavi/ex_agent: An Elixir library for building multi-agent LLM...</a></h3>

    <p><span class="github-repo-description">An Elixir library for building multi-agent LLM applications.</span></p>
</div>

  </article>

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

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

<aside class="onebox allowlistedgeneric" data-onebox-src="https://hex.pm/packages/ex_agent">
  <header class="source">
      <img src="https://hex.pm/images/hex-full-a8183c4f9adac71516516d107d402b18.svg?vsn=d" class="site-icon" alt="" width="136" height="120">

      <a href="https://hex.pm/packages/ex_agent" target="_blank" rel="noopener nofollow">Hex</a>
  </header>

  <article class="onebox-body">
    <img width="160" height="160" src="https://hex.pm/images/favicon-160-3770bc59f1f8ba7656b4db5a1eacd8e3.png?vsn=d" class="thumbnail onebox-avatar" alt="">

<h3><a href="https://hex.pm/packages/ex_agent" target="_blank" rel="noopener nofollow">ex_agent</a></h3>

  <p>An Elixir library for building multi-agent LLM applications.</p>


  </article>

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

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

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="391710" 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/is-anyone-working-on-ai-agents-in-elixir/69989/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-391710" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="391710"
                     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 #25"></div>
  </section>
</div>
    <div class="postbit" id="391712" data-post-id="391712">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi! I’ve seen a lot of good libraries being shared in this thread, so I’ll drop mine too <img src="https://forum.elixirforum.com/images/emoji/apple/slightly_smiling_face.png?v=15" title=":slightly_smiling_face:" class="emoji" alt=":slightly_smiling_face:" loading="lazy" width="20" height="20"></p>
<p>I recently made <a href="https://github.com/elchemista/spectre" rel="noopener nofollow ugc">Spectre</a> public. I’m already using it in a few products and shaping it around what has actually been useful in real applications.</p>
<p>Spectre is an OTP-native runtime for building agents while keeping routing, state, policies and side effects explicit. The model can propose actions, but protected actions must pass deterministic policies, and the host application still decides what is actually executed.</p>
<p>The idea is not to replace OTP or hide everything behind a magical framework. It is more a set of reusable building blocks around normal Elixir modules.</p>
<p>I’ve also made some companion libraries public:</p>
<ul>
<li>
<p><a href="https://github.com/elchemista/spectre_kinetic" rel="noopener nofollow ugc">spectre_kinetic</a> — maps natural-language or Action Language instructions into validated function-call candidates, without executing the tools.</p>
</li>
<li>
<p><a href="https://github.com/elchemista/spectre_lens" rel="noopener nofollow ugc">spectre_lens</a> — browser interaction for agents through Lightpanda/CDP, with agent-readable page views and explicit safety boundaries.</p>
</li>
<li>
<p><a href="https://github.com/elchemista/spectre_mnemonic" rel="noopener nofollow ugc">spectre_mnemonic</a> — working and durable memory using ETS, append-only storage, graph associations and hybrid recall.</p>
</li>
<li>
<p><a href="https://github.com/elchemista/spectre_directive" rel="noopener nofollow ugc">spectre_directive</a> — a mission planner that keeps a living plan and can correct it when new observations change the situation.</p>
</li>
</ul>
<p>Everything is still evolving, especially the companion libraries, but I thought this was the right thread to share it.</p>
<p>Feedback from anyone building real agentic products in Elixir would be very welcome.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="391712" 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/is-anyone-working-on-ai-agents-in-elixir/69989/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-391712" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="391712"
                     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>