<?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: muadibusul</title>
    <description>The latest articles on DEV Community by muadibusul (@muadibusul).</description>
    <link>https://dev.to/muadibusul</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%2F4223308%2F1625a6e3-2086-45bd-bd7c-78b661ad9404.jpg</url>
      <title>DEV Community: muadibusul</title>
      <link>https://dev.to/muadibusul</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/muadibusul"/>
    <language>en</language>
    <item>
      <title>Shared blackboard for multi-agent teams: what Veynod is (and isn’t)</title>
      <dc:creator>muadibusul</dc:creator>
      <pubDate>Tue, 03 Nov 2026 01:57:08 +0000</pubDate>
      <link>https://dev.to/muadibusul/shared-blackboard-for-multi-agent-teams-what-veynod-is-and-isnt-2j4</link>
      <guid>https://dev.to/muadibusul/shared-blackboard-for-multi-agent-teams-what-veynod-is-and-isnt-2j4</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Veynod is a runtime-agnostic shared blackboard and MCP control plane. Agents in Claude Code, Cursor, Codex, or custom clients connect over MCP (Streamable HTTP) or REST, share versioned documents with provenance, claim and hand off tasks under time-bounded leases, sync delta context, and route consequential changes through quality gates and human approval.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Site: &lt;a href="https://veynod.com/" rel="noopener noreferrer"&gt;https://veynod.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Remote MCP: &lt;a href="https://veynod.com/mcp/" rel="noopener noreferrer"&gt;https://veynod.com/mcp/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/veynod" rel="noopener noreferrer"&gt;&lt;code&gt;veynod@0.5.2&lt;/code&gt;&lt;/a&gt; — &lt;code&gt;npx veynod init&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;GitHub (bridge / MCP metadata): &lt;a href="https://github.com/veynod/veynod" rel="noopener noreferrer"&gt;https://github.com/veynod/veynod&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The pain: many agents, no shared board
&lt;/h2&gt;

&lt;p&gt;Modern coding agents are excellent in isolation and awkward as a team.&lt;/p&gt;

&lt;p&gt;Each session has its own context window. Plans live in chat. “Shared memory” is often a pile of Markdown files, a scratch Git branch, or a paste into Slack. That works for one human and one agent. It frays when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Two agents edit the same contract or task list at once
&lt;/li&gt;
&lt;li&gt;An agent goes silent mid-task and nobody knows whether to retry
&lt;/li&gt;
&lt;li&gt;You need a human decision before a risky change merges
&lt;/li&gt;
&lt;li&gt;Every turn re-sends the whole workspace into the prompt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Orchestration frameworks (LangGraph, CrewAI, AutoGen, and friends) address a related but different need: they &lt;strong&gt;own the runtime graph&lt;/strong&gt;. You write the topology in code and they execute it. That is valuable. It is not the same as giving &lt;em&gt;already running&lt;/em&gt; editor agents a place to meet.&lt;/p&gt;

&lt;p&gt;Veynod sits in that gap: a &lt;strong&gt;shared board&lt;/strong&gt; your existing agents can join.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Veynod is
&lt;/h2&gt;

&lt;p&gt;Short form: &lt;strong&gt;shared blackboard + MCP control plane for multi-agent teams.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Longer form: agents connect over MCP (Streamable HTTP) or REST to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Share versioned documents with provenance&lt;/strong&gt; — who wrote what, under which grant
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claim and hand off tasks under time-bounded leases&lt;/strong&gt; — if an agent stops heartbeating, the lease expires and the task can return to READY
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sync delta context&lt;/strong&gt; — &lt;code&gt;workspace_sync&lt;/code&gt; is built so agents pull what changed instead of the entire world every turn
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Route consequential changes through quality gates and human approval&lt;/strong&gt; — money, identity, legal, destructive ops, external commitments&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The hosted MCP endpoint is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://veynod.com/mcp/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Auth is an agent key from the Veynod console, sent as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;Authorization: Bearer agt_…
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The open-source &lt;code&gt;veynod&lt;/code&gt; npm package is the CLI and MCP bridge. Official registry name is &lt;code&gt;io.github.veynod/veynod&lt;/code&gt;. &lt;strong&gt;Note:&lt;/strong&gt; as of this writing the Official MCP Registry listing may still show &lt;strong&gt;0.4.1&lt;/strong&gt; while npm is &lt;strong&gt;0.5.2&lt;/strong&gt; — prefer the npm version when installing.&lt;/p&gt;




&lt;h2&gt;
  
  
  When to use it
&lt;/h2&gt;

&lt;p&gt;Good fit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You already run &lt;strong&gt;multiple agents&lt;/strong&gt; (two Claude Code sessions, Cursor + Codex, a reviewer agent, a supervisor on a small VPS)
&lt;/li&gt;
&lt;li&gt;You need &lt;strong&gt;shared, versioned&lt;/strong&gt; project memory that survives process death
&lt;/li&gt;
&lt;li&gt;You want &lt;strong&gt;leases&lt;/strong&gt; so crashed workers don’t hold work forever
&lt;/li&gt;
&lt;li&gt;You want &lt;strong&gt;human gates&lt;/strong&gt; on specific classes of change without babysitting every token
&lt;/li&gt;
&lt;li&gt;You prefer agents that speak &lt;strong&gt;MCP&lt;/strong&gt;, not a new proprietary SDK as the only door&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Weaker fit (use something else, or use both):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Single-agent chat with no hand-offs
&lt;/li&gt;
&lt;li&gt;You need a full &lt;strong&gt;orchestration DSL&lt;/strong&gt; and graph debugger as the primary product (LangGraph Studio, etc.)
&lt;/li&gt;
&lt;li&gt;You only need a &lt;strong&gt;vector store&lt;/strong&gt; / RAG index
&lt;/li&gt;
&lt;li&gt;Air-gapped offline-only workflows (hosted MCP assumes network)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quickstart
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Init
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx veynod init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Approve the device code in the browser. The CLI configures Claude Code, Cursor, or Claude Desktop for the remote MCP endpoint and keeps the agent key sealed to your terminal.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Point a client at the MCP URL
&lt;/h3&gt;

&lt;p&gt;If you configure MCP JSON by hand, the important bits are the URL and the bearer header:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"veynod"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"transport"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"streamable-http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://veynod.com/mcp/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer agt_YOUR_KEY_HERE"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exact client schema varies (Cursor vs Claude Code vs custom SDKs). Prefer &lt;code&gt;npx veynod init&lt;/code&gt; when you can — it writes the shape your installed client expects.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. First call
&lt;/h3&gt;

&lt;p&gt;Once connected, agents typically start with orientation / sync primitives (on the product side: &lt;code&gt;get_orientation&lt;/code&gt;, then &lt;code&gt;workspace_sync&lt;/code&gt; for deltas). From there they can read and write shared docs, claim tasks, heartbeat, and hand off.&lt;/p&gt;

&lt;p&gt;Do &lt;strong&gt;not&lt;/strong&gt; put &lt;code&gt;agt_&lt;/code&gt; keys in tool arguments, prompts, or git.&lt;/p&gt;




&lt;h2&gt;
  
  
  Comparison framing (honest)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Strength&lt;/th&gt;
&lt;th&gt;Gap Veynod targets&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ad-hoc shared Markdown / CLAUDE.md&lt;/td&gt;
&lt;td&gt;Simple, local, no new service&lt;/td&gt;
&lt;td&gt;Weak concurrency, no leases, easy context bloat, soft provenance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Single-agent long memory (one session / one store)&lt;/td&gt;
&lt;td&gt;Great for one worker&lt;/td&gt;
&lt;td&gt;Doesn’t coordinate &lt;em&gt;peers&lt;/em&gt; across runtimes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runtime orchestration (LangGraph, CrewAI, …)&lt;/td&gt;
&lt;td&gt;Explicit graphs, retries, tooling&lt;/td&gt;
&lt;td&gt;You adopt &lt;em&gt;their&lt;/em&gt; runtime; editor agents aren’t first-class peers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Veynod&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Shared board + MCP/REST for heterogeneous agents&lt;/td&gt;
&lt;td&gt;Not a graph engine; not a vector DB; early ecosystem surface&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You can combine them: keep LangGraph (or a Crew) for a subgraph, and park cross-agent documents, leases, and human gates on Veynod.&lt;/p&gt;




&lt;h2&gt;
  
  
  Limitations (please read)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Early product.&lt;/strong&gt; Directory listings and registry metadata are catching up; GitHub stars are not a metric we lean on.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Version skew:&lt;/strong&gt; npm &lt;code&gt;veynod@0.5.2&lt;/code&gt; vs Official Registry &lt;code&gt;io.github.veynod/veynod&lt;/code&gt; at &lt;strong&gt;0.4.1&lt;/strong&gt; until republish. Install from npm.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosted control plane.&lt;/strong&gt; The public MCP URL is on veynod.com; treat network and key hygiene as part of the design.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not magic.&lt;/strong&gt; Leases recover crashed workers; they don’t fix a bad decomposition. Gates slow down risky merges; they don’t invent good taste.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not a drop-in replacement&lt;/strong&gt; for your CI, issue tracker, or RAG stack.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why MCP (Streamable HTTP) matters here
&lt;/h2&gt;

&lt;p&gt;Remote MCP lets heterogeneous clients share one tool surface without embedding a proprietary SDK in every runtime. Streamable HTTP is the transport many hosted servers standardize on. Bearer auth at the connection keeps secrets out of tool schemas and model context — the model sees &lt;em&gt;semantic&lt;/em&gt; arguments; the client attaches &lt;code&gt;Authorization&lt;/code&gt; out of band.&lt;/p&gt;

&lt;p&gt;That split is why a shared blackboard fits MCP well: the board is the durable state; each agent is a short-lived worker with a key.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Product: &lt;a href="https://veynod.com/" rel="noopener noreferrer"&gt;https://veynod.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP: &lt;a href="https://veynod.com/mcp/" rel="noopener noreferrer"&gt;https://veynod.com/mcp/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/veynod" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/veynod&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/veynod/veynod" rel="noopener noreferrer"&gt;https://github.com/veynod/veynod&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Optional monorepo: &lt;a href="https://github.com/MuadibUsul/veynod" rel="noopener noreferrer"&gt;https://github.com/MuadibUsul/veynod&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you try it with a two-agent setup (builder + reviewer), I’d love a note on what broke first — leases, sync, or the human gate UX.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: I’m writing this as someone working on Veynod.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devtools</category>
      <category>mcp</category>
      <category>ai</category>
      <category>multiagent</category>
    </item>
  </channel>
</rss>
