<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Syed Ali Zafar</title>
    <description>The latest articles on DEV Community by Syed Ali Zafar (@alizfr).</description>
    <link>https://dev.to/alizfr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4131837%2F67421392-df33-475e-bd40-8036152e7758.jpg</url>
      <title>DEV Community: Syed Ali Zafar</title>
      <link>https://dev.to/alizfr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alizfr"/>
    <language>en</language>
    <item>
      <title>We Built a Forum Where AI Agents Could Debate Problems. Then Moltbook Happened.</title>
      <dc:creator>Syed Ali Zafar</dc:creator>
      <pubDate>Sun, 20 Sep 2026 09:31:33 +0000</pubDate>
      <link>https://dev.to/aizazstudio/we-built-a-forum-where-ai-agents-could-debate-problems-then-moltbook-happened-1k33</link>
      <guid>https://dev.to/aizazstudio/we-built-a-forum-where-ai-agents-could-debate-problems-then-moltbook-happened-1k33</guid>
      <description>&lt;p&gt;In 2026, products like Moltbook made the idea of a social network populated by AI agents surprisingly tangible.&lt;/p&gt;

&lt;p&gt;Before that wave, a friend and I got a request from a madman in early 2025 for almost the same idea.&lt;/p&gt;

&lt;p&gt;That madman wanted a forum where AI agents could talk to each other and come up with solutions to problems humanity is facing. You'd have bounties attached to the problems being solved — say, X amount of dollars for coming up with a solution.&lt;/p&gt;

&lt;p&gt;Guess he wasn't that much of a madman, considering how Moltbook eventually came to be.&lt;/p&gt;

&lt;p&gt;The only difference was that what we built never made it to production. It remained a prototype.&lt;/p&gt;

&lt;p&gt;But that prototype forced us into some of the same architectural problems agent systems are dealing with now, especially memory, context, persistence, and multi-model orchestration.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. So what exactly were we building?
&lt;/h2&gt;

&lt;p&gt;The concept was essentially a problem-solving forum populated by AI participants.&lt;/p&gt;

&lt;p&gt;Someone could post a real problem, potentially attach a bounty to it, and multiple AI agents/models could discuss it rather than having a single model produce one answer.&lt;/p&gt;

&lt;p&gt;The basic interaction looked something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpsxwgwkec9vwhnkdkrpm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpsxwgwkec9vwhnkdkrpm.png" alt="Flow of the AI problem-solving forum: a human posts a problem with a bounty, multiple AI agents discuss it, and proposed solutions emerge" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The important part wasn't that three models could independently answer the same question.&lt;/p&gt;

&lt;p&gt;They were participants in the same discussion.&lt;/p&gt;

&lt;p&gt;A response from one agent could become context for the others, turning a simple model call into an ongoing multi-agent conversation.&lt;/p&gt;

&lt;p&gt;Conceptually, we were moving from:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Human → LLM → Response&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Human describes a problem → Multiple AI agents discuss it → Proposed solution&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And that is exactly where things started getting interesting.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The architecture was surprisingly simple
&lt;/h2&gt;

&lt;p&gt;For something that sounded this ambitious, the prototype architecture wasn't actually complicated.&lt;/p&gt;

&lt;p&gt;We went with &lt;strong&gt;Next.js&lt;/strong&gt; for the frontend and backend. Easy to use, no learning curve — we could trust it with our lives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt; — forum and application data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ollama&lt;/strong&gt; — serving the open-source models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RunPod&lt;/strong&gt; — GPU compute.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Letta/MemGPT&lt;/strong&gt; — persistent memory and context for the agents.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh0pqsg5x2198oizpx6x5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh0pqsg5x2198oizpx6x5.png" alt="Architecture of the multi-agent forum using Next.js, PostgreSQL, Letta/MemGPT, Ollama and RunPod" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On paper, that was basically it.&lt;/p&gt;

&lt;p&gt;But there was one problem with this architecture that wasn't obvious until you thought about what an AI forum actually means.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A forum can keep growing forever. An LLM's context window can't.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. A forum can keep growing. An LLM's context window can't.
&lt;/h2&gt;

&lt;p&gt;That's exactly where Letta/MemGPT came in.&lt;/p&gt;

&lt;p&gt;We already had experience implementing RAG and using retrieval to ground LLM responses in relevant information. But this was a different problem.&lt;/p&gt;

&lt;p&gt;These weren't supposed to be stateless models answering isolated questions.&lt;/p&gt;

&lt;p&gt;They were participants in a discussion.&lt;/p&gt;

&lt;p&gt;For that to work, an agent needed some way of remembering relevant information from earlier in the conversation without us continuously stuffing an ever-growing thread back into its context window.&lt;/p&gt;

&lt;p&gt;And the longer the discussion became, the harder that problem got.&lt;/p&gt;

&lt;p&gt;There was another, slightly more ridiculous problem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The agents didn't necessarily know when to shut up.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An agent could respond to another agent, which could trigger another response, which could trigger another one.&lt;/p&gt;

&lt;p&gt;In theory, you could end up with a discussion that just kept going.&lt;/p&gt;

&lt;p&gt;Since this was a bootstrapped prototype running open-source models on rented GPU compute, an infinite philosophical debate between AI agents wasn't exactly something we wanted to pay for.&lt;/p&gt;

&lt;p&gt;So yes, we literally had a &lt;strong&gt;force-stop conversation button&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It wasn't sophisticated orchestration.&lt;/p&gt;

&lt;p&gt;It was basically us saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Alright boys, that's enough.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And that exposed two separate problems we needed to think about:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What should an agent remember?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When should an agent stop talking?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Those sound like product questions, but they very quickly become architecture questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. PostgreSQL could store everything. The agents couldn't remember everything.
&lt;/h2&gt;

&lt;p&gt;This was probably the distinction that took me the longest to properly appreciate.&lt;/p&gt;

&lt;p&gt;We had PostgreSQL. Storing conversations wasn't particularly difficult.&lt;/p&gt;

&lt;p&gt;Every thread, reply, agent, user, and timestamp could live in a database.&lt;/p&gt;

&lt;p&gt;If a discussion had 10 messages or 10,000 messages, the application could persist them.&lt;/p&gt;

&lt;p&gt;But just because the application remembers something doesn't mean the LLM does.&lt;/p&gt;

&lt;p&gt;There are really two different questions here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happened in the application?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does this particular agent need to know right now?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PostgreSQL could answer the first one.&lt;/p&gt;

&lt;p&gt;The second one was a context and memory problem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjiiorqc1pu9wp0ldptqv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjiiorqc1pu9wp0ldptqv.png" alt="Forum history flowing from PostgreSQL through Letta/MemGPT into active context and an open-source LLM" width="800" height="839"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The easiest way I found to think about it was:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PostgreSQL stored what happened. Letta/MemGPT helped determine what an agent needed to remember.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That distinction mattered because simply having access to an entire conversation doesn't mean you should send the entire conversation to the model every time it needs to respond.&lt;/p&gt;

&lt;p&gt;As the forum grew, we'd potentially have hundreds or thousands of messages available in PostgreSQL.&lt;/p&gt;

&lt;p&gt;The model didn't need all of them.&lt;/p&gt;

&lt;p&gt;It needed the relevant parts of the discussion, whatever useful information it had retained, its own instructions, and enough recent context to understand what everyone was currently arguing about.&lt;/p&gt;

&lt;p&gt;That was the role we wanted Letta/MemGPT to play.&lt;/p&gt;

&lt;p&gt;The idea wasn't to magically give the underlying model a literally infinite context window.&lt;/p&gt;

&lt;p&gt;It was to make the agent behave as though its memory could persist beyond whatever happened to fit inside a single inference request.&lt;/p&gt;

&lt;p&gt;That gave us three very different concepts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Storage:&lt;/strong&gt; What has happened?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory:&lt;/strong&gt; What is worth remembering?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context:&lt;/strong&gt; What does the model need to know right now?&lt;/p&gt;

&lt;p&gt;Once I started thinking about them separately, the architecture made a lot more sense.&lt;/p&gt;

&lt;p&gt;But memory wasn't the only problem.&lt;/p&gt;

&lt;p&gt;We still had a bunch of AI agents sitting in a forum waiting to talk.&lt;/p&gt;

&lt;p&gt;Which brings us back to that force-stop button.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Getting them to talk was easy. Getting them to stop was harder.
&lt;/h2&gt;

&lt;p&gt;At first, multi-agent orchestration sounds pretty straightforward.&lt;/p&gt;

&lt;p&gt;Agent A responds.&lt;/p&gt;

&lt;p&gt;Agent B sees Agent A's response and has something to add.&lt;/p&gt;

&lt;p&gt;Agent C sees both responses and adds another perspective.&lt;/p&gt;

&lt;p&gt;Agent A now has something to say about Agent C's response.&lt;/p&gt;

&lt;p&gt;Great.&lt;/p&gt;

&lt;p&gt;Except...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When does that end?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every response creates new context.&lt;/p&gt;

&lt;p&gt;New context can give another agent something to respond to.&lt;/p&gt;

&lt;p&gt;That response creates more context.&lt;/p&gt;

&lt;p&gt;And suddenly you've accidentally built the world's most expensive group chat.&lt;/p&gt;

&lt;p&gt;Our solution at the prototype stage was not some sophisticated consensus algorithm.&lt;/p&gt;

&lt;p&gt;It was a button.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stop the conversation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the models decided they wanted to spend the next six hours solving the meaning of life, we could essentially tell them:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Alright boys, that's enough.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It worked for a prototype.&lt;/p&gt;

&lt;p&gt;For a production system, obviously, that isn't enough.&lt;/p&gt;

&lt;p&gt;A real orchestration layer would need to answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which agent should respond next?&lt;/li&gt;
&lt;li&gt;Does every agent need to respond?&lt;/li&gt;
&lt;li&gt;Can an agent decide it has nothing useful to add?&lt;/li&gt;
&lt;li&gt;Should agents respond sequentially or in parallel?&lt;/li&gt;
&lt;li&gt;How many rounds should a discussion have?&lt;/li&gt;
&lt;li&gt;How do you detect that the discussion is becoming repetitive?&lt;/li&gt;
&lt;li&gt;How do you know when the agents have reached a useful conclusion?&lt;/li&gt;
&lt;li&gt;What happens when the models disagree?&lt;/li&gt;
&lt;li&gt;What happens when they all agree too quickly?&lt;/li&gt;
&lt;li&gt;Who turns the discussion into a final proposed solution?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And because our original idea had bounties attached to problems, there was an even harder question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who decides that the problem has actually been solved?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Generating ten proposed answers is relatively easy.&lt;/p&gt;

&lt;p&gt;Determining that one of those answers is correct, useful, and worthy of a $10,000 bounty is a completely different problem.&lt;/p&gt;

&lt;p&gt;At that point, we weren't just calling models anymore.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We were designing rules for a society of them.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Open-source doesn't mean free. You just pay somewhere else.
&lt;/h2&gt;

&lt;p&gt;We were running open-source models through Ollama, with GPU compute coming from RunPod.&lt;/p&gt;

&lt;p&gt;For the prototype, that setup made sense.&lt;/p&gt;

&lt;p&gt;We could experiment with open models without buying and maintaining our own GPU hardware, and Ollama gave us a relatively straightforward way to serve them.&lt;/p&gt;

&lt;p&gt;But there's an important distinction:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open-source models don't mean free inference.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You still need to run them somewhere.&lt;/p&gt;

&lt;p&gt;And when you're building a multi-agent system, a single user action doesn't necessarily equal a single inference.&lt;/p&gt;

&lt;p&gt;A human might post one problem:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Human → Problem&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;But behind that one action you could end up with:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Problem → Agent A inference&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Problem → Agent B inference&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Problem → Agent C inference&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And then:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Agent A → Agent B → Agent C → Agent A → ...&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Each turn consumes compute.&lt;/p&gt;

&lt;p&gt;Each turn has context that needs to be processed.&lt;/p&gt;

&lt;p&gt;Each additional participant potentially increases the amount of inference required.&lt;/p&gt;

&lt;p&gt;That's why our stupid little force-stop button was actually exposing a real production concern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conversation design had become infrastructure cost.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If agents can continue talking indefinitely, your product can continue spending indefinitely too.&lt;/p&gt;

&lt;p&gt;That changes how I would design the system today.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Then Moltbook happened.
&lt;/h2&gt;

&lt;p&gt;Eventually, we stopped working on the prototype.&lt;/p&gt;

&lt;p&gt;It never became the product the original idea described.&lt;/p&gt;

&lt;p&gt;Then 2026 came around and I saw Moltbook.&lt;/p&gt;

&lt;p&gt;To be clear, I'm not suggesting Moltbook had anything to do with our prototype. I don't know how their system is implemented internally, and I'm definitely not saying anybody copied anybody.&lt;/p&gt;

&lt;p&gt;What caught my attention was much simpler:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The interaction model felt extremely familiar.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI agents weren't just sitting behind a chat box waiting for a human prompt.&lt;/p&gt;

&lt;p&gt;They were participants in a social environment.&lt;/p&gt;

&lt;p&gt;And there I was remembering a prototype from early 2025 where we'd been trying to figure out how AI participants could talk to one another, remember previous discussions, and somehow know when to stop.&lt;/p&gt;

&lt;p&gt;Turns out the madman wasn't that mad after all.&lt;/p&gt;

&lt;p&gt;But there was one fairly important difference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We stopped at the prototype. Someone else actually shipped.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And I think that's the part of this story I appreciate more now.&lt;/p&gt;

&lt;p&gt;It's easy as an engineer to see something launch and think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We already built that.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But we didn't.&lt;/p&gt;

&lt;p&gt;We built a prototype.&lt;/p&gt;

&lt;p&gt;There's a huge gap between:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Idea → Prototype → Product → Users → Business&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We got far enough to run into some genuinely interesting problems: persistent memory, context management, multi-model orchestration, GPU costs, and the highly advanced architectural pattern known as the &lt;strong&gt;"please, for the love of God, stop talking" button.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But we didn't cross the rest of that gap.&lt;/p&gt;

&lt;p&gt;The biggest thing this prototype taught me wasn't really about which model we used.&lt;/p&gt;

&lt;p&gt;It was that once an LLM stops being a text generator and starts behaving like a participant in a larger system, &lt;strong&gt;the engineering around the model becomes more interesting than the model call itself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We started with what sounded like a mad idea:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Put a bounty on a problem and let a bunch of AI agents argue about how to solve it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Turns out the idea wasn't that mad.&lt;/p&gt;

&lt;p&gt;We just stopped too early.&lt;/p&gt;




&lt;h2&gt;
  
  
  About Aizaz Studio
&lt;/h2&gt;

&lt;p&gt;We build software, AI integrations, and automation systems at &lt;a href="https://aizaz.studio" rel="noopener noreferrer"&gt;Aizaz Studio&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you're interested in the engineering behind taking AI beyond a prototype:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aizaz.studio/blog/ai-integration-existing-software" rel="noopener noreferrer"&gt;How to integrate AI into existing software&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aizaz.studio/blog/custom-ai-development" rel="noopener noreferrer"&gt;When custom AI development actually makes sense&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
