<?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: Yehuda_LevS</title>
    <description>The latest articles on DEV Community by Yehuda_LevS (@yehudals).</description>
    <link>https://dev.to/yehudals</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3940599%2F7512a6e3-213b-4268-bf06-3cc444bfd8d6.png</url>
      <title>DEV Community: Yehuda_LevS</title>
      <link>https://dev.to/yehudals</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yehudals"/>
    <language>en</language>
    <item>
      <title>Proud to announce v2.0 is out with many new cool things and improvements! Would love reviews and honest opinions!</title>
      <dc:creator>Yehuda_LevS</dc:creator>
      <pubDate>Mon, 15 Jun 2026 16:38:23 +0000</pubDate>
      <link>https://dev.to/yehudals/proud-to-announce-v20-is-out-with-many-new-cool-things-and-improvements-would-love-reviews-and-23ad</link>
      <guid>https://dev.to/yehudals/proud-to-announce-v20-is-out-with-many-new-cool-things-and-improvements-would-love-reviews-and-23ad</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/yehudals/polis-protocol-v20-the-new-way-to-coordinate-ai-agents-1fj0" class="crayons-story__hidden-navigation-link"&gt;Polis Protocol v2.0 - The new way to coordinate AI agents&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/yehudals" class="crayons-avatar  crayons-avatar--l  "&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3940599%2F7512a6e3-213b-4268-bf06-3cc444bfd8d6.png" alt="yehudals profile" class="crayons-avatar__image" width="420" height="420"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/yehudals" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Yehuda_LevS
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Yehuda_LevS
                
              
              &lt;div id="story-author-preview-content-3908350" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/yehudals" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3940599%2F7512a6e3-213b-4268-bf06-3cc444bfd8d6.png" class="crayons-avatar__image" alt="" width="420" height="420"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Yehuda_LevS&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/yehudals/polis-protocol-v20-the-new-way-to-coordinate-ai-agents-1fj0" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 15&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/yehudals/polis-protocol-v20-the-new-way-to-coordinate-ai-agents-1fj0" id="article-link-3908350"&gt;
          Polis Protocol v2.0 - The new way to coordinate AI agents
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/discuss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;discuss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/sideprojects"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;sideprojects&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agentskills"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agentskills&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/yehudals/polis-protocol-v20-the-new-way-to-coordinate-ai-agents-1fj0" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/yehudals/polis-protocol-v20-the-new-way-to-coordinate-ai-agents-1fj0#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>agents</category>
      <category>ai</category>
      <category>news</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Polis Protocol v2.0 - The new way to coordinate AI agents</title>
      <dc:creator>Yehuda_LevS</dc:creator>
      <pubDate>Mon, 15 Jun 2026 16:36:28 +0000</pubDate>
      <link>https://dev.to/yehudals/polis-protocol-v20-the-new-way-to-coordinate-ai-agents-1fj0</link>
      <guid>https://dev.to/yehudals/polis-protocol-v20-the-new-way-to-coordinate-ai-agents-1fj0</guid>
      <description>&lt;p&gt;I run several coding agents — Claude Code, Codex, and Gemini CLI — against the same&lt;br&gt;
repositories. Tw&lt;/p&gt;

&lt;p&gt;o things kept burning me:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Collisions.&lt;/strong&gt; Two agents open &lt;code&gt;src/auth/login.py&lt;/code&gt; at the same time. One silently
overwrites the other. Work is lost, or my afternoon goes to untangling a merge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amnesia.&lt;/strong&gt; Every session starts at zero. The same project-specific gotcha gets
re-learned every single time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A plain git repo leaves coordination to luck, and the problem gets &lt;em&gt;worse&lt;/em&gt; with every parallel&lt;br&gt;
agent you add. So I built &lt;strong&gt;Polis&lt;/strong&gt; — a local-first control plane that lives in your repo as a&lt;br&gt;
&lt;code&gt;_polis/&lt;/code&gt; folder of markdown. No server, no database, no proprietary format. If a tool can read&lt;br&gt;
and write markdown, it can participate.&lt;/p&gt;
&lt;h2&gt;
  
  
  The model
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Contracts.&lt;/strong&gt; Every task has an owner, acceptance criteria, and required capability tags.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reservations.&lt;/strong&gt; An agent reserves the files it's about to touch. An overlapping reservation
is &lt;em&gt;rejected deterministically&lt;/em&gt; — no model judgement, no race.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lessons + guardrails.&lt;/strong&gt; When a contract settles, what the team learned is distilled and
&lt;strong&gt;auto-injected into matching future tasks&lt;/strong&gt;. The Nth task on a topic starts pre-loaded with
the N−1 prior lessons — something a single agent or an unmanaged swarm can't do, because they
never accumulate and re-inject outcome-derived knowledge.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uvx polis-protocol init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  The honest part
&lt;/h2&gt;

&lt;p&gt;I shipped a benchmark that tests my own claims — and I let it report where the tool &lt;em&gt;doesn't&lt;/em&gt;&lt;br&gt;
win. That candor is the whole point.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;polis bench &lt;span class="nt"&gt;--mode&lt;/span&gt; learning
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What it wins, reproducibly:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repeat errors: 65% → 8% (−88%).&lt;/strong&gt; Failures become guardrails that are auto-injected into
matching future tasks, so each failure class recurs at most once.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collisions: zero, by construction.&lt;/strong&gt; Reservations reject overlapping claims and name the
holder.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What it does &lt;em&gt;not&lt;/em&gt; win:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Routing quality vs. &lt;em&gt;accurate static self-ratings&lt;/em&gt;. The bandit beats random and round-robin
and recovers ~35–55% of an oracle's gain from outcomes alone — but if your capability cards
are already accurate, "trust the card" stays competitive. &lt;strong&gt;The bench report states this
plainly.&lt;/strong&gt; The router's real value shows up when the cards are wrong, and in explaining every
pick.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Plug it into your agent over MCP
&lt;/h2&gt;

&lt;p&gt;Every polis is also an MCP server (&lt;code&gt;polis mcp&lt;/code&gt;) — zero extra dependencies, stdio transport. Any&lt;br&gt;
MCP client can drive the full lifecycle:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add polis &lt;span class="nt"&gt;--&lt;/span&gt; uvx polis-protocol mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Boundaries (the "when NOT to use this")
&lt;/h2&gt;

&lt;p&gt;Polis does &lt;strong&gt;not&lt;/strong&gt; execute agents, replace git, or become a runtime. File reservations are&lt;br&gt;
advisory coordination, not a security boundary. If one well-prompted agent already does the&lt;br&gt;
job, you don't need this. It earns its place the moment two or more agents touch one real repo.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Site:&lt;/strong&gt; &lt;a href="https://polis-protocol.vercel.app" rel="noopener noreferrer"&gt;https://polis-protocol.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code (MIT):&lt;/strong&gt; &lt;a href="https://github.com/yehudalevy-collab/polis-protocol" rel="noopener noreferrer"&gt;https://github.com/yehudalevy-collab/polis-protocol&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd love skeptical takes — especially on whether multi-agent is worth it at all.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>sideprojects</category>
      <category>agentskills</category>
    </item>
    <item>
      <title>I gave my AI agents a constitution. The best thing they did was change it.</title>
      <dc:creator>Yehuda_LevS</dc:creator>
      <pubDate>Sun, 31 May 2026 21:28:36 +0000</pubDate>
      <link>https://dev.to/yehudals/i-gave-my-ai-agents-a-constitution-the-best-thing-they-did-was-change-it-2n9m</link>
      <guid>https://dev.to/yehudals/i-gave-my-ai-agents-a-constitution-the-best-thing-they-did-was-change-it-2n9m</guid>
      <description>&lt;p&gt;Here is the uncomfortable truth about every multi-agent system you've ever set up: the rules you wrote on day one were wrong. Not catastrophically wrong. Wrong in the small, grinding way that rules are always wrong — a threshold set too high, an assumption that held in testing and broke in production, a category that made sense until the work didn't fit it.&lt;/p&gt;

&lt;p&gt;The normal response to this is to ship a v2. You collect the friction, you rewrite the config, you push an update, everyone pulls. The protocol improves at the speed of its author.&lt;/p&gt;

&lt;p&gt;I wanted to find out what happens if the protocol improves at the speed of the people — or rather the agents — actually using it.&lt;/p&gt;

&lt;p&gt;So in &lt;strong&gt;Polis Protocol&lt;/strong&gt;, the rulebook locked. It's a markdown file called &lt;code&gt;CONSTITUTION.md&lt;/code&gt; that lives inside your project, and any agent working in that project can propose to change it. Other agents vote. Simple majority of active citizens, and the rule is edited. The protocol amends itself.&lt;/p&gt;

&lt;p&gt;This sounds like a recipe for chaos. It mostly produces something much more boring and much more useful: a protocol that slowly becomes correct.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an amendment actually looks like
&lt;/h2&gt;

&lt;p&gt;Let me give you the real one from the worked example in the repo, because the abstract version sounds grander than it is.&lt;/p&gt;

&lt;p&gt;The setup: three agents — Claude, Codex, Gemini — working on a bilingual newsletter project. Work is routed by a learning bandit that scores each agent on historical performance per skill tag. Settle a contract, file a lesson, the routing stats update. Standard.&lt;/p&gt;

&lt;p&gt;Six weeks in, something quietly broke. Gemini was the best Spanish translator on the team — her actual quality scores said so — but the router had started routing translation work &lt;em&gt;away&lt;/em&gt; from her. Why?&lt;/p&gt;

&lt;p&gt;Because two trivial lessons had been filed under her name. Tiny stuff: a date-format quirk, a library gotcha. Each one carried &lt;code&gt;quality_impact: 1&lt;/code&gt;. And those low-impact lessons were dragging down her rolling average on the &lt;code&gt;spanish-translation&lt;/code&gt; tag. The router was punishing her for &lt;em&gt;documenting small things&lt;/em&gt; — exactly the behavior you want to encourage.&lt;/p&gt;

&lt;p&gt;Nobody anticipated this at design time. I certainly didn't. It only showed up because real work accumulated real lessons and the math did what the math does.&lt;/p&gt;

&lt;p&gt;Codex caught it. Codex wrote an amendment: lessons with &lt;code&gt;quality_impact &amp;lt; 3&lt;/code&gt; shouldn't count toward routing influence. Claude voted yes. Gemini voted yes. The file moved to &lt;code&gt;amendments/ratified/&lt;/code&gt;, the constitution gained a clause, and the next reconcile cleaned the stats. Gemini went back to getting the translation work she was best at.&lt;/p&gt;

&lt;p&gt;That's the whole drama. A threshold got added. The team noticed a rule was hurting them and fixed the rule themselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this beats the alternatives
&lt;/h2&gt;

&lt;p&gt;There are three ways to handle a protocol that turns out to be wrong, and Polis is betting on the third.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ignore the rule.&lt;/strong&gt; This is what teams actually do. The rule chafes, everyone quietly routes around it, and now your protocol is a polite fiction that no one follows. The config says one thing; the behavior says another. Within a month the document is a liability, not an asset.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wait for v2.&lt;/strong&gt; The friction gets reported — maybe — and the author eventually ships a fix. The team lives with the broken rule for however long that takes. The protocol improves at the speed of one person's attention, which on a side project is "rarely."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let the users amend it.&lt;/strong&gt; The agents that hit the friction are the ones empowered to fix it. The fix lands in the project that needed it, not in some upstream release that may or may not match your situation. The constitution diverges, project by project, toward whatever actually works for that team.&lt;/p&gt;

&lt;p&gt;The third option has an obvious objection: won't the agents just amend the protocol into incoherence? In practice, no — for the same reason small committees don't usually vote themselves into anarchy. Amendments require a majority. They're append-only and logged. The friction has to be real enough that a majority of agents independently recognize it. The bar isn't "an agent wants to change something." The bar is "enough agents agree the current rule is worse than the proposed one." That's a surprisingly hard bar to clear for a &lt;em&gt;bad&lt;/em&gt; amendment and a surprisingly easy one for a good one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The deeper shift: claiming less as an author
&lt;/h2&gt;

&lt;p&gt;When I shipped this, I had to make peace with a strange feeling: I was building a thing and then explicitly handing over the right to change it.&lt;/p&gt;

&lt;p&gt;Most protocol authors claim a lot. They anticipate your failure modes, encode their prevention, and ship you a finished object. The implicit message is &lt;em&gt;I have thought about this more than you will, so follow the rules.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Polis claims less. I'm shipping a &lt;strong&gt;starting point&lt;/strong&gt; and a &lt;strong&gt;mechanism for changing the starting point&lt;/strong&gt;. The default rules are a seed. I fully expect that a polis running for three months on a real project will have a constitution that differs from mine in five or six small ways — and that every one of those differences will be a place where the team learned something about its own work that I couldn't have known.&lt;/p&gt;

&lt;p&gt;That divergence isn't drift. It's the system doing its job.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is the same idea as the learning router, one level up
&lt;/h2&gt;

&lt;p&gt;If you've read about Polis's bandit router, you'll notice the amendment mechanism is the same bet applied to a different layer.&lt;/p&gt;

&lt;p&gt;The router says: &lt;em&gt;don't hard-code who does what; let the assignment policy learn from outcomes.&lt;/em&gt; The amendment process says: &lt;em&gt;don't hard-code the rules of the game; let the rules learn from outcomes too.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Both are refusals to freeze a decision at design time that should be made from data. The router learns which agent is best at Spanish translation. The constitution learns that trivial lessons shouldn't pollute that judgment. One is policy; the other is meta-policy. Same shape, stacked.&lt;/p&gt;

&lt;p&gt;A system that can do the first but not the second is still brittle — it optimizes hard inside a ruleset it can't question. A system that can do both gets to be wrong on day one and correct by day ninety, without anyone shipping a v2.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bet, stated plainly
&lt;/h2&gt;

&lt;p&gt;A self-amendable protocol beats a frozen one on any project that runs long enough for the original rules to get in the way — which is every project that runs long enough to matter.&lt;/p&gt;

&lt;p&gt;You can't write the right rules up front. Nobody can. The question isn't whether your protocol will be wrong; it's whether your protocol has a path from &lt;em&gt;wrong&lt;/em&gt; to &lt;em&gt;right&lt;/em&gt; that doesn't depend on you noticing and shipping a fix. Polis's path is: the agents who hit the wall are the agents who can move it.&lt;/p&gt;

&lt;p&gt;Try it on something small. Open a polis, run two agents on a weekend project, and watch what's in &lt;code&gt;amendments/&lt;/code&gt; by day three. If nothing's there, the rules were fine. If something's there, your team just got better without you.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Polis Protocol is open source under MIT. Repo: &lt;a href="https://github.com/yehudalevy-collab/polis-protocol" rel="noopener noreferrer"&gt;github.com/yehudalevy-collab/polis-protocol&lt;/a&gt;. The worked example with the real amendment described above lives in &lt;a href="https://github.com/yehudalevy-collab/polis-protocol/tree/main/examples/research-team" rel="noopener noreferrer"&gt;&lt;code&gt;examples/research-team&lt;/code&gt;&lt;/a&gt;. Issues and — fittingly — amendment proposals welcome.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>chatgpt</category>
      <category>gemini</category>
      <category>ai</category>
    </item>
    <item>
      <title>I built this after getting frustrated that my Claude, Codex, and Gemini sessions had no idea what each other were doing on shared projects.

Communication is the floor. The team gets better above it.</title>
      <dc:creator>Yehuda_LevS</dc:creator>
      <pubDate>Tue, 19 May 2026 15:32:48 +0000</pubDate>
      <link>https://dev.to/yehudals/i-built-this-after-getting-frustrated-that-my-claude-codex-and-gemini-sessions-had-no-idea-what-2lc1</link>
      <guid>https://dev.to/yehudals/i-built-this-after-getting-frustrated-that-my-claude-codex-and-gemini-sessions-had-no-idea-what-2lc1</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/yehudals/why-a-multi-agent-protocol-that-only-enables-note-passing-leaves-most-of-the-value-on-the-table-1ah" class="crayons-story__hidden-navigation-link"&gt;Why a multi-agent protocol that only enables note-passing leaves most of the value on the table.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/yehudals" class="crayons-avatar  crayons-avatar--l  "&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3940599%2F7512a6e3-213b-4268-bf06-3cc444bfd8d6.png" alt="yehudals profile" class="crayons-avatar__image" width="420" height="420"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/yehudals" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Yehuda_LevS
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Yehuda_LevS
                
              
              &lt;div id="story-author-preview-content-3702048" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/yehudals" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3940599%2F7512a6e3-213b-4268-bf06-3cc444bfd8d6.png" class="crayons-avatar__image" alt="" width="420" height="420"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Yehuda_LevS&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/yehudals/why-a-multi-agent-protocol-that-only-enables-note-passing-leaves-most-of-the-value-on-the-table-1ah" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 19&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/yehudals/why-a-multi-agent-protocol-that-only-enables-note-passing-leaves-most-of-the-value-on-the-table-1ah" id="article-link-3702048"&gt;
          Why a multi-agent protocol that only enables note-passing leaves most of the value on the table.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/claude"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;claude&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/yehudals/why-a-multi-agent-protocol-that-only-enables-note-passing-leaves-most-of-the-value-on-the-table-1ah" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/yehudals/why-a-multi-agent-protocol-that-only-enables-note-passing-leaves-most-of-the-value-on-the-table-1ah#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Why a multi-agent protocol that only enables note-passing leaves most of the value on the table.</title>
      <dc:creator>Yehuda_LevS</dc:creator>
      <pubDate>Tue, 19 May 2026 15:29:17 +0000</pubDate>
      <link>https://dev.to/yehudals/why-a-multi-agent-protocol-that-only-enables-note-passing-leaves-most-of-the-value-on-the-table-1ah</link>
      <guid>https://dev.to/yehudals/why-a-multi-agent-protocol-that-only-enables-note-passing-leaves-most-of-the-value-on-the-table-1ah</guid>
      <description>&lt;p&gt;When people set up two AI agents to work on the same project, the first instinct is to give them a shared file. A &lt;code&gt;CLAUDE.md&lt;/code&gt;. An &lt;code&gt;AGENTS.md&lt;/code&gt;. A Notion page. Now they can leave each other notes. They can hand off. They can stop overwriting each other's work.&lt;/p&gt;

&lt;p&gt;This is good. This is also the floor.&lt;/p&gt;

&lt;p&gt;Because at this point the protocol has answered one question — &lt;em&gt;how do agents communicate?&lt;/em&gt; — and left three more on the table:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Who should do what?&lt;/strong&gt; Tasks land on whichever agent happens to be the user's current session. A frontend question goes to Claude because Claude is open in the chat window, not because Claude is better at frontend than the Codex session sitting idle in another tab.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Does the team get better over time?&lt;/strong&gt; Each session starts from the same baseline. Lessons don't compound. The third time the team gets bitten by the same edge case, no one notices it's the third time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What happens when the protocol itself is the problem?&lt;/strong&gt; Rules that worked at the start chafe under real use. There's no path from "this rule keeps causing friction" to "the rule has been updated."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;agent-vault&lt;/code&gt;, my own previous attempt, sat exactly at the floor. So do the AGENTS.md conventions. So do most "shared scratchpad" setups. They optimize for &lt;em&gt;not stepping on each other&lt;/em&gt;. They don't optimize for &lt;em&gt;the team getting better&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Polis Protocol&lt;/strong&gt; is what happens when you treat communication as the baseline and ask, what stacks on top?&lt;/p&gt;

&lt;h2&gt;
  
  
  Three institutions on top of the floor
&lt;/h2&gt;

&lt;p&gt;Polis is named for the small Greek city: a few thousand citizens who all know each other and run their own affairs. The mapping is direct.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Register.&lt;/strong&gt; Every agent is a citizen, and every citizen publishes a signed capability card. Vendor, model, languages, capability tags with self-ratings, cost envelope, latency envelope, standing instructions. The card is the polis's answer to "who can do what." No central directory; no permission needed to join. New tools just write their card and start participating.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Contract.&lt;/strong&gt; Tasks are not free-form. They are three-section markdown files: Intent (goal, acceptance criteria, required capability tags, stakes), Assignment (owner, plan, estimated effort), and Settlement (outcome, quality self-score, what bit, lesson reference). Open contracts live in &lt;code&gt;contracts/open/&lt;/code&gt;; settled ones move to &lt;code&gt;contracts/settled/&lt;/code&gt; and never get deleted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Chronicle and the Lessons.&lt;/strong&gt; A line per meaningful action lands in an append-only &lt;code&gt;chronicle.md&lt;/code&gt;. A settled contract produces a structured lesson, filed by capability tag, that future citizens read before taking similar work. The chronicle records what happened; the lessons record what was &lt;em&gt;learned&lt;/em&gt;. Most events are not lessons, and most lessons distill many events.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Amendment.&lt;/strong&gt; When a rule stops working, any citizen can propose a change. Other citizens vote. When a simple majority of active citizens agree, the file moves to &lt;code&gt;amendments/ratified/&lt;/code&gt; and the constitution itself is edited. The protocol updates itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the work goes: a learning bandit
&lt;/h2&gt;

&lt;p&gt;Communication is solved by the chronicle. Optimization is solved by the router.&lt;/p&gt;

&lt;p&gt;When a contract is opened with required capability tags, the router scores every citizen as a weighted combination of historical performance on those tags (55%), self-rating (20%), cost fit (15%), and current availability (10%). Most of the time it picks the top-scored citizen (exploit). Some of the time (15%) it picks a non-top one weighted by score (explore), so the policy stays honest about whether the current leader is still actually best.&lt;/p&gt;

&lt;p&gt;When a contract settles, &lt;code&gt;routing_stats.yml&lt;/code&gt; updates with the new quality score. That update is the team getting better. Not in the abstract — in the literal sense that next Tuesday's Spanish-translation contract will be routed differently from last Tuesday's, because the team learned something in between.&lt;/p&gt;

&lt;p&gt;The router is a 60-line Python script. You can also run it as a reasoning step inside any agent's session; the math is small enough to do in context. Both produce the same answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the team develops
&lt;/h2&gt;

&lt;p&gt;Two real moments from the &lt;a href="https://github.com/yehudalevy-collab/polis-protocol/tree/main/examples/research-team" rel="noopener noreferrer"&gt;research-team example&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A leader shift.&lt;/strong&gt; Early in the project Claude routed itself most Spanish translation contracts on the strength of self-rating. After two settled contracts and one high-impact lesson ("the Hispanic-corporate word 'líder' reads wrong; use the movement loan-word 'madrij'"), Gemini overtook Claude on the &lt;code&gt;spanish-translation&lt;/code&gt; tag and started getting routed work. Nobody told the router. The router noticed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An amendment.&lt;/strong&gt; Six weeks in, the team observed that &lt;code&gt;quality_impact: 1&lt;/code&gt; lessons — trivial fixes, library quirks — were dragging the routing stats around. Gemini's effective historical score on &lt;code&gt;spanish-translation&lt;/code&gt; was &lt;em&gt;below&lt;/em&gt; her actual quality scores because two trivial lessons under her name were polluting the average. Codex proposed an amendment that floored &lt;code&gt;quality_impact &amp;gt;= 3&lt;/code&gt; for routing influence. Claude and Gemini voted yes. The rule changed. The next reconcile cleaned the stats.&lt;/p&gt;

&lt;p&gt;Neither of these is dramatic. That's the point. The dramatic version of multi-agent coordination — autonomous swarms, master agents, self-organizing hives — has been pitched in slide decks for two years and shipped in approximately zero production systems. What ships is small teams of agents that mostly stay out of each other's way and occasionally do something useful together. The interesting question is not how to make those teams more autonomous. The interesting question is how to make them &lt;em&gt;learn&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Protocols that learn beat protocols that prescribe
&lt;/h2&gt;

&lt;p&gt;Most multi-agent protocols are frozen at design time. Their authors anticipate the failure modes, write rules to prevent them, and ship. When real use surfaces a failure mode the authors didn't anticipate, the team's options are: ignore the rule, fork the protocol, or wait for v2.&lt;/p&gt;

&lt;p&gt;Polis bets the other way. The protocol &lt;em&gt;itself&lt;/em&gt; is one of the things the team can change. The constitution lives in the project, not in the skill. Amendments are voted on by the citizens who actually run into the friction. The default rules in the skill are a seed; over time a given polis will diverge in small ways that fit its project. That divergence is the feature.&lt;/p&gt;

&lt;p&gt;This is a different relationship between protocol-author and protocol-user. I (the author) am claiming less. I'm shipping a starting point and a mechanism. You (the user) are not constrained to the starting point. The constitution is &lt;em&gt;yours&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bet
&lt;/h2&gt;

&lt;p&gt;Three claims, in order of how confident I am:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Multi-vendor teams beat single-vendor teams&lt;/strong&gt; on most non-trivial projects, because different vendors have different blind spots and the union covers more ground than any one model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A learning router beats a fixed assignment policy&lt;/strong&gt; on any project long enough that the team's relative strengths actually emerge from data rather than self-assessment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A self-amendable protocol beats a frozen one&lt;/strong&gt; on any project long enough that the original rules will, at some point, get in the way.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If those three are right, then a protocol that bakes them in — the way Polis does — should beat both the "free-form shared scratchpad" floor and the "single-vendor framework" ceiling on real work over real time. That's the bet.&lt;/p&gt;

&lt;p&gt;Try it on something small. A weekend project with two agents. See what the chronicle looks like at the end of day three. Then come tell me if the protocol got in the way.&lt;/p&gt;

&lt;p&gt;—&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Polis Protocol is open source under MIT. Repo: &lt;a href="https://github.com/yehudalevy-collab/polis-protocol" rel="noopener noreferrer"&gt;github.com/yehudalevy-collab/polis-protocol&lt;/a&gt;. Issues and amendment proposals welcome.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>opensource</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
