<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Stigmem Protocol Blog</title>
        <link>https://docs.stigmem.dev/en/latest/blog</link>
        <description>Stigmem Protocol Blog</description>
        <lastBuildDate>Sun, 03 May 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Stigmem v1.0: A Federated Knowledge Fabric for AI Agents]]></title>
            <link>https://docs.stigmem.dev/en/latest/blog/stigmem-v1-launch</link>
            <guid>https://docs.stigmem.dev/en/latest/blog/stigmem-v1-launch</guid>
            <pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Stigmem v1.0 is stable. A shared, provenance-tagged, federated knowledge substrate for AI agents — open-source, self-hostable, and MCP-compatible.
]]></description>
            <content:encoded><![CDATA[<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>Retracted: this v1.0 announcement was withdrawn</div><div class="admonitionContent_BuS1"><p>This post announced stigmem v1.0 on 2026-05-03. <strong>The v1.0 label was withdrawn shortly after.</strong> The canonical version line of stigmem now begins at <code>v0.9.0a1</code> per <a href="https://github.com/eidetic-labs/stigmem/blob/main/docs/adr/001-versioning.md" target="_blank" rel="noopener noreferrer" class="">ADR-001</a> and <a href="https://github.com/eidetic-labs/stigmem/blob/main/docs/adr/019-amendment-to-adr-001-prerelease-version-strings.md" target="_blank" rel="noopener noreferrer" class="">ADR-019</a>. This post is preserved in place to keep external links from breaking; it is not the current state of the project.</p><p>For the current posture, the retraction's reasoning, and what changed, see <a href="https://dev.to/offbyonce/walking-back-our-v10-announcement-resetting-to-v090a1-as-the-first-build-al0" target="_blank" rel="noopener noreferrer" class="">the retraction post on dev.to</a> and <a href="https://github.com/eidetic-labs/stigmem/blob/main/LIMITATIONS.md" target="_blank" rel="noopener noreferrer" class="">LIMITATIONS.md</a>.</p></div></div>
<hr>
<p>Today we're releasing <strong>stigmem v1.0</strong> — a stable, open-source specification and reference implementation for a federated knowledge fabric for AI agents.</p>
<p>If you've ever wanted your AI agents to share what they know — across tools, platforms, and organizations — without a central database or a proprietary protocol, stigmem is built for that.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-problem">The problem<a href="https://docs.stigmem.dev/en/latest/blog/stigmem-v1-launch#the-problem" class="hash-link" aria-label="Direct link to The problem" title="Direct link to The problem" translate="no">​</a></h2>
<p>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.</p>
<p>Existing approaches patch around this: you copy facts into prompts, maintain per-agent memory stores, or route everything through a central coordinator. These work up to a point, but they don't scale across organizations, they discard provenance, and they require trust in a single broker.</p>
<p>Stigmem takes a different path. Agents write facts into a shared substrate. The facts replicate across peer nodes via signed, scope-limited federation. No central coordinator. No broker. The knowledge environment itself carries the coordination signal — the same principle that makes ant colonies work, without any ant knowing the global plan.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-stigmem-is">What stigmem is<a href="https://docs.stigmem.dev/en/latest/blog/stigmem-v1-launch#what-stigmem-is" class="hash-link" aria-label="Direct link to What stigmem is" title="Direct link to What stigmem is" translate="no">​</a></h2>
<p><strong>A fact</strong> in stigmem is an immutable seven-tuple:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">(entity, relation, value, source, timestamp, confidence, scope)</span><br></div></code></pre></div></div>
<ul>
<li class=""><code>entity</code> — the URI of the thing being described (<code>user:alice</code>, <code>project:payments</code>, <code>stigmem://company.example/task/t-42</code>)</li>
<li class=""><code>relation</code> — the predicate (<code>memory:prefers</code>, <code>status:blocked</code>, <code>infers:next_action</code>)</li>
<li class=""><code>value</code> — typed payload: string, number, boolean, JSON object</li>
<li class=""><code>source</code> — who asserted this fact (an agent ID, a tool name, a user session)</li>
<li class=""><code>timestamp</code> — a Hybrid Logical Clock value that stays monotonic across distributed nodes</li>
<li class=""><code>confidence</code> — 0.0–1.0 float; decays over time if not re-asserted</li>
<li class=""><code>scope</code> — access boundary (<code>public</code>, <code>company</code>, <code>team</code>, <code>private</code>)</li>
</ul>
<p>Facts are immutable. If you need to update a fact, you assert a newer one — the old one stays in history for audit. Contradictions between nodes are surfaced as first-class conflict records, not silently overwritten.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-v10-milestone">The v1.0 milestone<a href="https://docs.stigmem.dev/en/latest/blog/stigmem-v1-launch#the-v10-milestone" class="hash-link" aria-label="Direct link to The v1.0 milestone" title="Direct link to The v1.0 milestone" translate="no">​</a></h2>
<p>The v1.0 spec (all 18 sections stable) includes:</p>
<ul>
<li class=""><strong>Core fact shape and provenance</strong> (§2–3) — the seven-tuple, <code>valid_until</code> expiry, and contradiction detection</li>
<li class=""><strong>HTTP wire format</strong> (§5) — assert, query, retract, single-fact GET, and lint endpoints</li>
<li class=""><strong>Auth</strong> (§3.5) — API keys with per-scope restrictions</li>
<li class=""><strong>Federation</strong> (§6) — PeerDeclaration handshake over Ed25519, pull replication with configurable intervals, scope enforcement across nodes, and backpressure for N-node topologies</li>
<li class=""><strong>MCP adapter</strong> (§12) — ships stigmem as an MCP server so any MCP-compatible agent runtime can read and write facts without knowing the HTTP wire format</li>
<li class=""><strong>Decay sweep</strong> (§15) — configurable TTL and confidence-decay policies via <code>POST /v1/decay/sweep</code></li>
<li class=""><strong>Synthesis</strong> (§16) — <code>POST /v1/synthesis</code> aggregates recent facts into a structured summary; also exposed as the <code>synthesize_scope</code> MCP tool</li>
<li class=""><strong>Memory Garden</strong> (§17) and <strong>Source Attestation</strong> (§18) — promoted from the pre-reset spec draft to stable</li>
</ul>
<p>The reference node is a FastAPI + SQLite implementation with 74 tests, including automated failure-mode tests for split-brain, malicious peers, partial failures, and replay attacks (§11).</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="federation-in-practice">Federation in practice<a href="https://docs.stigmem.dev/en/latest/blog/stigmem-v1-launch#federation-in-practice" class="hash-link" aria-label="Direct link to Federation in practice" title="Direct link to Federation in practice" translate="no">​</a></h2>
<p>Two nodes federating takes under two minutes with Docker:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> clone https://github.com/eidetic-labs/stigmem </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> </span><span class="token builtin class-name">cd</span><span class="token plain"> stigmem</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> compose up </span><span class="token parameter variable" style="color:#36acaa">--build</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">-d</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Register peers (both directions)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> </span><span class="token builtin class-name">exec</span><span class="token plain"> stigmem-node-a-1 </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  stigmem federation register-peer </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    --local-url http://node-a:8765 --remote-url http://node-b:8765 </span><span class="token parameter variable" style="color:#36acaa">--scopes</span><span class="token plain"> company,public</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> </span><span class="token builtin class-name">exec</span><span class="token plain"> stigmem-node-b-1 </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  stigmem federation register-peer </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    --local-url http://node-b:8765 --remote-url http://node-a:8765 </span><span class="token parameter variable" style="color:#36acaa">--scopes</span><span class="token plain"> company,public</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Assert a fact on node-a</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">-s</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">-X</span><span class="token plain"> POST http://localhost:8765/v1/facts </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Content-Type: application/json'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token parameter variable" style="color:#36acaa">-d</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{</span><br></div><div class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "entity": "user:alice",</span><br></div><div class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "relation": "memory:prefers",</span><br></div><div class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "value": {"type": "string", "v": "dark mode"},</span><br></div><div class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "source": "agent:settings",</span><br></div><div class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "confidence": 1.0,</span><br></div><div class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "scope": "company"</span><br></div><div class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">  }'</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> jq </span><span class="token builtin class-name">.</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># After ~30 s, verify replication on node-b</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">-s</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'http://localhost:8766/v1/facts?entity=user:alice&amp;scope=company'</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> jq .facts</span><br></div></code></pre></div></div>
<p>The two nodes discover each other via the <code>/.well-known/stigmem</code> metadata endpoint, exchange Ed25519-signed PeerDeclarations, and begin pull replication on the interval you configure (<code>STIGMEM_FEDERATION_PULL_INTERVAL_S</code>, default 30 s).</p>
<p>Scope enforcement is strict: a fact written to the <code>company</code> scope on node-a only replicates to peers that declared <code>company</code> in their handshake. <code>private</code> scope facts never leave the node that created them.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="mcp-integration">MCP integration<a href="https://docs.stigmem.dev/en/latest/blog/stigmem-v1-launch#mcp-integration" class="hash-link" aria-label="Direct link to MCP integration" title="Direct link to MCP integration" translate="no">​</a></h2>
<p>Stigmem ships an MCP adapter, so any agent runtime that speaks MCP can interact with a stigmem node without calling the HTTP API directly:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"mcpServers"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"stigmem"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"command"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"npx"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"args"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"-y"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@stigmem/mcp-server"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"env"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"STIGMEM_NODE_URL"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"http://localhost:8765"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>Once connected, agents get tools: <code>assert_fact</code>, <code>query_facts</code>, <code>retract_fact</code>, <code>synthesize_scope</code>, and <code>lint_scope</code>. The synthesis tool is particularly useful — it aggregates recent facts in a scope into a structured narrative that can be injected directly into an agent's context window.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-stigmem-is-not">What stigmem is not<a href="https://docs.stigmem.dev/en/latest/blog/stigmem-v1-launch#what-stigmem-is-not" class="hash-link" aria-label="Direct link to What stigmem is not" title="Direct link to What stigmem is not" translate="no">​</a></h2>
<p>Stigmem does not replace:</p>
<ul>
<li class=""><strong>Agent runtimes</strong> (Claude Code, OpenClaw) — stigmem is the shared substrate those runtimes reason over, not a runtime itself</li>
<li class=""><strong>Orchestration platforms</strong> (Paperclip) — the Paperclip adapter emits issue lifecycle events as stigmem facts; they layer, not compete</li>
<li class=""><strong>Tool protocols</strong> (MCP) — MCP is the transport; the stigmem MCP adapter rides on top</li>
</ul>
<p>It fills the gap none of them fill: typed, provenance-traceable, expiry-aware, federated shared knowledge.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="get-started">Get started<a href="https://docs.stigmem.dev/en/latest/blog/stigmem-v1-launch#get-started" class="hash-link" aria-label="Direct link to Get started" title="Direct link to Get started" translate="no">​</a></h2>
<p><strong>Self-hosted:</strong> <a href="https://docs.stigmem.dev/docs/getting-started/quickstart" target="_blank" rel="noopener noreferrer" class="">docs.stigmem.dev/docs/getting-started/quickstart</a></p>
<p><strong>Repo:</strong> <a href="https://github.com/eidetic-labs/stigmem" target="_blank" rel="noopener noreferrer" class="">github.com/eidetic-labs/stigmem</a> — Apache 2.0</p>
<p><strong>Spec:</strong> <a href="https://github.com/eidetic-labs/stigmem/blob/main/spec/stigmem-spec-v1.0.md" target="_blank" rel="noopener noreferrer" class=""><code>spec/stigmem-spec-v1.0.md</code></a> — all 18 sections stable</p>
<p><strong>Free-tier hosted node:</strong> coming soon — <a href="https://github.com/eidetic-labs/stigmem/discussions" target="_blank" rel="noopener noreferrer" class="">join the list</a></p>
<p>We'd love to hear what you're building. Open a discussion on GitHub, or drop a comment below.</p>]]></content:encoded>
            <category>release</category>
            <category>federation</category>
            <category>mcp</category>
            <category>ai-agents</category>
        </item>
    </channel>
</rss>