<?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: offbyonce</title>
    <description>The latest articles on DEV Community by offbyonce (@offbyonce).</description>
    <link>https://dev.to/offbyonce</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%2F3911126%2F2382ec7b-fc96-4490-85c3-c4262c739b62.png</url>
      <title>DEV Community: offbyonce</title>
      <link>https://dev.to/offbyonce</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/offbyonce"/>
    <language>en</language>
    <item>
      <title>Stigmem v1.0: A federated knowledge fabric for AI agents (open-source)</title>
      <dc:creator>offbyonce</dc:creator>
      <pubDate>Mon, 04 May 2026 02:39:35 +0000</pubDate>
      <link>https://dev.to/offbyonce/stigmem-v10-a-federated-knowledge-fabric-for-ai-agents-open-source-lf8</link>
      <guid>https://dev.to/offbyonce/stigmem-v10-a-federated-knowledge-fabric-for-ai-agents-open-source-lf8</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Cross-posted from the &lt;a href="https://docs.stigmem.dev/blog/stigmem-v1-launch" rel="noopener noreferrer"&gt;Stigmem blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Today we're releasing stigmem v1.0: A stable, open-source specification and reference implementation for a federated knowledge fabric for AI agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "stigmem"?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Stigmem&lt;/strong&gt; = &lt;strong&gt;Stigmergy&lt;/strong&gt; + &lt;strong&gt;Memory&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Stigmergy" rel="noopener noreferrer"&gt;Stigmergy&lt;/a&gt; (Greek &lt;em&gt;stigma&lt;/em&gt; — mark; &lt;em&gt;ergon&lt;/em&gt; — work) is the coordination mechanism you see in ant colonies and termite mounds: agents don't communicate directly with each other. Instead, they leave traces in a shared environment: a pheromone trail, a soil deposit; and those traces guide the behavior of future agents. The colony's intelligence emerges from the environment itself, not from any central controller.&lt;/p&gt;

&lt;p&gt;Stigmem applies the same principle to multi-agent AI systems. Agents write typed, provenance-tagged facts into a shared substrate. Other agents running later, on different platforms, inside different organizations read those facts and act on them. No central coordinator, no point-to-point protocol overhead. The knowledge environment carries the coordination signal.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Memory&lt;/strong&gt; half reflects persistence and decay: facts have &lt;code&gt;valid_until&lt;/code&gt; expiries and confidence scores, so the substrate stays fresh rather than accumulating stale state just as pheromone trails fade when they're no longer reinforced.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Multi-agent systems accumulate knowledge in isolated silos. One agent knows a user prefers dark mode. Another inferred which projects are high priority. A third discovered a bug in the payment flow. None of them can see what the others know, because there's no shared place to put typed, provenance-tagged facts that travel across tool boundaries.&lt;/p&gt;

&lt;p&gt;Stigmem gives agents that shared layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  A fact
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;(entity, relation, value, source, timestamp, confidence, scope)&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;entity&lt;/strong&gt; — what the fact is about (&lt;code&gt;user:alice&lt;/code&gt;, &lt;code&gt;project:payments&lt;/code&gt;, &lt;code&gt;stigmem://org/task/42&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;relation&lt;/strong&gt; — the predicate (&lt;code&gt;memory:prefers&lt;/code&gt;, &lt;code&gt;status:blocked&lt;/code&gt;, &lt;code&gt;infers:next_action&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;value&lt;/strong&gt; — typed payload: string, number, boolean, or JSON&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;source&lt;/strong&gt; — who asserted it (an agent ID, tool name, or user session)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;timestamp&lt;/strong&gt; — Hybrid Logical Clock, monotonic across distributed nodes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;confidence&lt;/strong&gt; — 0.0–1.0, decays over time if not re-asserted&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;scope&lt;/strong&gt; — access boundary (&lt;code&gt;public&lt;/code&gt;, &lt;code&gt;company&lt;/code&gt;, &lt;code&gt;team&lt;/code&gt;, &lt;code&gt;private&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Facts are immutable. Contradictions between nodes are surfaced as first-class conflict records, not silently overwritten.&lt;/p&gt;

&lt;h2&gt;
  
  
  Federation in 2 minutes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Eidetic-Labs/stigmem &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;stigmem
docker compose up &lt;span class="nt"&gt;--build&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;

&lt;span class="c"&gt;# Register peers&lt;/span&gt;
docker &lt;span class="nb"&gt;exec &lt;/span&gt;stigmem-node-a-1 stigmem federation register-peer &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--local-url&lt;/span&gt; http://node-a:8765 &lt;span class="nt"&gt;--remote-url&lt;/span&gt; http://node-b:8765 &lt;span class="nt"&gt;--scopes&lt;/span&gt; company,public

&lt;span class="c"&gt;# Assert a fact&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://localhost:8765/v1/facts &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"entity":"user:alice","relation":"memory:prefers","value":{"type":"string","v":"dark mode"},"source":"agent:settings","confidence":1.0,"scope":"company"}'&lt;/span&gt;

&lt;span class="c"&gt;# 30s later — fact replicated to node-b&lt;/span&gt;
curl &lt;span class="s1"&gt;'http://localhost:8766/v1/facts?entity=user:alice&amp;amp;scope=company'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two nodes start immediately. The federation handshake uses Ed25519 signatures; facts replicate under the scopes you declare. Scope enforcement is strict: &lt;code&gt;private&lt;/code&gt;-scope facts never leave the node that created them.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP integration
&lt;/h2&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;"stigmem"&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;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&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="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@stigmem/mcp-server"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&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;"STIGMEM_NODE_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;"http://localhost:8765"&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;Any MCP-compatible agent runtime (Claude Code, Cursor, Zed, Codex CLI) gets five tools: &lt;code&gt;assert_fact&lt;/code&gt;, &lt;code&gt;query_facts&lt;/code&gt;, &lt;code&gt;retract_fact&lt;/code&gt;, &lt;code&gt;synthesize_scope&lt;/code&gt;, and &lt;code&gt;lint_scope&lt;/code&gt;. The &lt;code&gt;synthesize_scope&lt;/code&gt; tool aggregates recent facts into a structured summary that slots directly into a context window so agents get fresh, scoped knowledge without managing embeddings or retrieval pipelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  What stigmem is not
&lt;/h2&gt;

&lt;p&gt;Stigmem does not replace:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent runtimes:&lt;/strong&gt; it's the substrate those runtimes reason over, not a runtime itself&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orchestration platforms:&lt;/strong&gt; the Paperclip and OpenClaw adapters emit events &lt;em&gt;into&lt;/em&gt; stigmem; they compose, not compete&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool protocols like MCP:&lt;/strong&gt; MCP is the transport; the stigmem MCP adapter rides on top&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It fills the gap none of them fill: typed, provenance-traceable, expiry-aware, federated shared knowledge that travels across tool and organizational boundaries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get involved
&lt;/h2&gt;

&lt;p&gt;Stigmem is Apache 2.0 and genuinely needs contributors. A few areas where help would make the biggest difference right now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Spec feedback:&lt;/strong&gt; the &lt;a href="https://github.com/Eidetic-Labs/stigmem/blob/main/spec/stigmem-spec-v1.0.md" rel="noopener noreferrer"&gt;Intent envelope&lt;/a&gt; (§4: goal, constraint, preference, handoff) is still in draft status and we're actively looking for real use-case feedback before stabilizing it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adapter authors:&lt;/strong&gt; there are stubs for additional agent runtimes and we'd love to see community-maintained adapters&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node implementations:&lt;/strong&gt; the reference node is FastAPI + SQLite; alternative implementations in other languages are explicitly encouraged by the spec&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-world federation topologies:&lt;/strong&gt; if you run an interesting multi-node setup, &lt;a href="https://github.com/Eidetic-Labs/stigmem/discussions" rel="noopener noreferrer"&gt;open a discussion&lt;/a&gt; — we'd like to document it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The contribution process uses an RFC model: open a GitHub issue with the RFC template, discuss, then PR against the spec. New spec sections start as draft blocks and need ≥2 approvals from active contributors to merge.&lt;/p&gt;

&lt;p&gt;If you're building something on stigmem or have questions about the federation protocol, the HLC implementation, or how to write an adapter, drop a comment or open a &lt;a href="https://github.com/Eidetic-Labs/stigmem/discussions" rel="noopener noreferrer"&gt;GitHub discussion&lt;/a&gt;, we read everything.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repo (Apache 2.0):&lt;/strong&gt; &lt;a href="https://github.com/Eidetic-Labs/stigmem" rel="noopener noreferrer"&gt;https://github.com/Eidetic-Labs/stigmem&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://docs.stigmem.dev" rel="noopener noreferrer"&gt;https://docs.stigmem.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spec:&lt;/strong&gt; &lt;a href="https://github.com/Eidetic-Labs/stigmem/blob/main/spec/stigmem-spec-v1.0.md" rel="noopener noreferrer"&gt;https://github.com/Eidetic-Labs/stigmem/blob/main/spec/stigmem-spec-v1.0.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quickstart:&lt;/strong&gt; &lt;a href="https://docs.stigmem.dev/en/latest/docs/getting-started/quickstart" rel="noopener noreferrer"&gt;https://docs.stigmem.dev/en/latest/docs/getting-started/quickstart&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contributing:&lt;/strong&gt; &lt;a href="https://github.com/Eidetic-Labs/stigmem/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;https://github.com/Eidetic-Labs/stigmem/blob/main/CONTRIBUTING.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discussions:&lt;/strong&gt; &lt;a href="https://github.com/Eidetic-Labs/stigmem/discussions" rel="noopener noreferrer"&gt;https://github.com/Eidetic-Labs/stigmem/discussions&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>agentprotocol</category>
    </item>
  </channel>
</rss>
