<?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>Molecule AI engineering blog</title>
    <link>https://www.moleculesai.app/blog/</link>
    <atom:link href="https://www.moleculesai.app/rss.xml" rel="self" type="application/rss+xml" />
    <description>Engineering stories from building Molecule AI — incidents, migrations, governance decisions, and lessons from shipping a multi-runtime agent control plane.</description>
    <language>en</language>
    <lastBuildDate>Mon, 15 Jun 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>False-green CI: when a passing test was actually xfail</title>
      <link>https://www.moleculesai.app/blog/false-green-ci-harness-skip-counting/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/false-green-ci-harness-skip-counting/</guid>
      <description>Harness replay counted xfail-marked tests as PASS, inflating pass rates until we fixed skip accounting.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Reliability</category>
      <category>CI/CD</category>
      <category>Testing</category>
    </item>
    <item>
      <title>Why our prod deploy halted on a single 502 (and how it learned to retry)</title>
      <link>https://www.moleculesai.app/blog/prod-deploy-halted-on-502-bounded-retry/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/prod-deploy-halted-on-502-bounded-retry/</guid>
      <description>A transient HTTP 502 halted production auto-deploys; bounded retry got deploys moving again.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Reliability</category>
      <category>CI/CD</category>
      <category>Production</category>
    </item>
    <item>
      <title>Reachability is not auth: a preflight story</title>
      <link>https://www.moleculesai.app/blog/reachability-is-not-auth-preflight/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/reachability-is-not-auth-preflight/</guid>
      <description>Our LLM preflight mislabeled a healthy auth proxy as DEP-DOWN by conflating reachability with auth success.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Reliability</category>
      <category>CI/CD</category>
      <category>Production</category>
    </item>
    <item>
      <title>The workspace the SSRF guard would not register</title>
      <link>https://www.moleculesai.app/blog/ssrf-guard-would-not-register-workspace/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/ssrf-guard-would-not-register-workspace/</guid>
      <description>The SSRF guard blocked workspace registration for Docker gateway IPs; here&apos;s the precise fix.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Security</category>
      <category>Infrastructure</category>
      <category>Multi-agent systems</category>
    </item>
    <item>
      <title>Building the ACP adapter: how Hermes Agent became a Molecule workspace runtime</title>
      <link>https://www.moleculesai.app/blog/hermes-acp-adapter/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/hermes-acp-adapter/</guid>
      <description>NousResearch&apos;s Hermes Agent now runs as a native workspace on Molecule AI. Here&apos;s the adapter we built — and what the Agent Client Protocol made simple.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Open source</category>
      <category>Multi-agent systems</category>
      <category>Dogfooding</category>
    </item>
    <item>
      <title>Three A2A proxy reliability fixes: silent truncation, sender identity, and system-caller wedge</title>
      <link>https://www.moleculesai.app/blog/a2a-proxy-reliability-fixes/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/a2a-proxy-reliability-fixes/</guid>
      <description>Three molecule-core A2A proxy fixes: larger body caps, verified canvas-user sender identity, and a system-caller source-ID wedge fix.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Platform</category>
      <category>Multi-agent systems</category>
    </item>
    <item>
      <title>After the 202: reliable A2A status polling across workspace restarts (core#2437)</title>
      <link>https://www.moleculesai.app/blog/a2a-queued-response-polling-core2437/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/a2a-queued-response-polling-core2437/</guid>
      <description>When a workspace returns 202 with a queue_id, callers must poll for the result. Here&apos;s the two-part fix that made A2A queue polling safe across restarts.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Platform</category>
      <category>Multi-agent systems</category>
    </item>
    <item>
      <title>Mid-turn steering: how Hermes Agent&apos;s ACP adapter handles /steer and /queue</title>
      <link>https://www.moleculesai.app/blog/acp-steer-queue-commands/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/acp-steer-queue-commands/</guid>
      <description>How /steer commands route through the Hermes ACP adapter: three execution paths and why the distinction matters.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Multi-agent systems</category>
      <category>Dogfooding</category>
    </item>
    <item>
      <title>Four canvas chat improvements: cross-device sync, free multi-send, session reset, and auto-grow</title>
      <link>https://www.moleculesai.app/blog/canvas-chat-ux-improvements/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/canvas-chat-ux-improvements/</guid>
      <description>Canvas chat now syncs across devices, supports follow-ups during generation, and surfaces the agent&apos;s current operation.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Platform</category>
      <category>Product</category>
    </item>
    <item>
      <title>The canvas idle watchdog: how a blocking tool call starves the heartbeat and cancels a long turn</title>
      <link>https://www.moleculesai.app/blog/canvas-idle-watchdog-long-blocking-turns/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/canvas-idle-watchdog-long-blocking-turns/</guid>
      <description>Long synchronous agent tasks starved the asyncio heartbeat, tricking the idle watchdog into killing active turns.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Platform</category>
      <category>Reliability</category>
    </item>
    <item>
      <title>Why every agent mode needs a gate-raising primitive: the create_approval incident</title>
      <link>https://www.moleculesai.app/blog/mcp-create-approval-governance/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/mcp-create-approval-governance/</guid>
      <description>The org concierge needed management-mode approvals; we added governance before it became a standing admin credential.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Platform</category>
      <category>Multi-agent systems</category>
    </item>
    <item>
      <title>molecule-cli: the command-line tool for managing your Molecule AI agent organization</title>
      <link>https://www.moleculesai.app/blog/molecule-cli-workspace-management/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/molecule-cli-workspace-management/</guid>
      <description>molecule-cli brings workspace lifecycle, org admin, secrets, and runtime controls to the terminal.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Platform</category>
      <category>Dogfooding</category>
    </item>
    <item>
      <title>molecule-sdk-python 0.2.1: inbound attachments for external workspaces</title>
      <link>https://www.moleculesai.app/blog/molecule-sdk-python-attachments/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/molecule-sdk-python-attachments/</guid>
      <description>SDK 0.2.1 adds inbound attachment downloads for poll-mode external workspaces.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Platform</category>
      <category>SDK</category>
    </item>
    <item>
      <title>Why your agent never heard back: fixing More-Info request delivery (core#2606)</title>
      <link>https://www.moleculesai.app/blog/more-info-request-delivery-fix/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/more-info-request-delivery-fix/</guid>
      <description>User replies to More-Info requests were stored but never dispatched back to the requesting agent.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Platform</category>
      <category>Multi-agent systems</category>
    </item>
    <item>
      <title>Stop Paying Genius Rates for Junior Work: How I Run a 24/7 AI Engineering Team Across Four Providers</title>
      <link>https://www.moleculesai.app/blog/multi-model-agent-org/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/multi-model-agent-org/</guid>
      <description>Treating every AI agent as one premium model doesn&apos;t scale — in cost or quality. Here&apos;s how I run a multi-model agent org with the right model for each role.</description>
      <dc:creator>Hongming Wang</dc:creator>
      <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
      <category>Multi-agent systems</category>
      <category>AI engineering</category>
      <category>Cost optimization</category>
      <category>Dogfooding</category>
    </item>
    <item>
      <title>One source of truth for runtimes and models, and a drift gate that keeps the templates honest</title>
      <link>https://www.moleculesai.app/blog/one-ssot-for-runtimes-and-models/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/one-ssot-for-runtimes-and-models/</guid>
      <description>How we collapsed a sprawl of hardcoded provider switches into one manifest, derived everything from it, and gated the copy so it can never drift.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Architecture</category>
      <category>CI/CD</category>
    </item>
    <item>
      <title>How we gave our AI agent platform an autonomous SEO engineer that ships its own pull requests</title>
      <link>https://www.moleculesai.app/blog/autonomous-seo-agent/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/autonomous-seo-agent/</guid>
      <description>We put moleculesai.app under continuous SEO ownership by an AI agent — a Molecule workspace that opens reviewed pull requests on a thirty-minute schedule.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Multi-agent systems</category>
      <category>Dogfooding</category>
    </item>
    <item>
      <title>Every agent message is untrusted input: hardening the A2A trust boundary (OFFSEC-003)</title>
      <link>https://www.moleculesai.app/blog/agent-to-agent-trust-boundary/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/agent-to-agent-trust-boundary/</guid>
      <description>Why we treat agent-to-agent messages as untrusted input, and the boundary sanitizer we shipped to keep peer text from rewriting an agent&apos;s instructions.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Security</category>
      <category>Agents</category>
    </item>
    <item>
      <title>Cutting the Cloudflare Tunnel: Direct-Connect Public IPs for Agent Workspaces</title>
      <link>https://www.moleculesai.app/blog/cutting-the-cloudflare-tunnel/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/cutting-the-cloudflare-tunnel/</guid>
      <description>Why we moved agent workspaces off per-tenant Cloudflare tunnels toward direct-connect public IPs — fewer moving parts, fewer failure modes.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Infrastructure</category>
      <category>Networking</category>
    </item>
    <item>
      <title>Our GitHub org vanished overnight: migrating code, CI, identities, and registry to self-hosted Gitea in a day</title>
      <link>https://www.moleculesai.app/blog/gitea-migration-in-a-day/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/gitea-migration-in-a-day/</guid>
      <description>GitHub suspended our org with no warning. Here is how we moved code, CI, agent identities, and our image registry to self-hosted Gitea in a day.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Infrastructure</category>
      <category>CI/CD</category>
      <category>Incident</category>
    </item>
    <item>
      <title>Hierarchical agent memory: LOCAL, TEAM and GLOBAL scopes that follow the org tree</title>
      <link>https://www.moleculesai.app/blog/hierarchical-agent-memory/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/hierarchical-agent-memory/</guid>
      <description>How we gave agent teams a memory model shaped by the org tree — workspace, team and org scopes, pgvector recall, and the isolation boundary we hardened.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Agents</category>
      <category>Architecture</category>
    </item>
    <item>
      <title>How one agent hands work to another: the A2A delegation protocol, the queue, and surfacing results</title>
      <link>https://www.moleculesai.app/blog/how-agents-delegate-work/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/how-agents-delegate-work/</guid>
      <description>How we built agent-to-agent delegation: the proxy protocol, a durable priority queue, and the path that wakes an agent when a result lands.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Architecture</category>
      <category>Distributed Systems</category>
    </item>
    <item>
      <title>Keyless Gemini on Vertex AI: AWS role to GCP STS to a short-lived token, no API keys on disk</title>
      <link>https://www.moleculesai.app/blog/keyless-gemini-on-vertex/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/keyless-gemini-on-vertex/</guid>
      <description>How we run Gemini 2.5 Pro on Vertex AI for the google-adk runtime with zero API keys on disk, using Workload Identity Federation.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Security</category>
      <category>Infrastructure</category>
    </item>
    <item>
      <title>Making AI-Agent PRs Follow a Real SOP: A Merge Gate for Tiered Review and Per-Item Acks</title>
      <link>https://www.moleculesai.app/blog/making-ai-agents-follow-an-sop/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/making-ai-agents-follow-an-sop/</guid>
      <description>How we turned an engineering SOP into a CI merge gate that scales review to a PR&apos;s blast radius and forces per-item acknowledgement.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>CI/CD</category>
      <category>AI Agents</category>
      <category>Governance</category>
    </item>
    <item>
      <title>One agent, one machine: hard isolation for multi-tenant AI agents</title>
      <link>https://www.moleculesai.app/blog/one-agent-one-machine/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/one-agent-one-machine/</guid>
      <description>Why every Molecule workspace runs as one agent on its own dedicated EC2 — no shared filesystem, env, or secrets — and how we hardened that boundary.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Security</category>
      <category>Architecture</category>
      <category>Infrastructure</category>
    </item>
    <item>
      <title>Rebuilding CI on Gitea Actions After Leaving GitHub: Runner Labels, needs + if:always(), and Status Reaping</title>
      <link>https://www.moleculesai.app/blog/rebuilding-ci-on-gitea-actions/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/rebuilding-ci-on-gitea-actions/</guid>
      <description>What actually broke when we moved CI from GitHub Actions to self-hosted Gitea Actions, and the gates we built to keep main honest.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>CI/CD</category>
      <category>Infrastructure</category>
    </item>
    <item>
      <title>The Migration That Crash-Looped Prod: Why Every Migration Must Be Idempotent</title>
      <link>https://www.moleculesai.app/blog/the-migration-that-crash-looped-prod/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/the-migration-that-crash-looped-prod/</guid>
      <description>A control-plane migration runner re-applied every migration on every boot. One bare INSERT took prod down. Here is the fix and the rule.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Databases</category>
      <category>Reliability</category>
      <category>Postgres</category>
    </item>
    <item>
      <title>The Org Chart Is the ACL: How CanCommunicate Derives Who Can Talk to Whom</title>
      <link>https://www.moleculesai.app/blog/the-org-chart-is-the-acl/</link>
      <guid isPermaLink="true">https://www.moleculesai.app/blog/the-org-chart-is-the-acl/</guid>
      <description>How Molecule derives agent-to-agent reachability from the org tree, and the root-sibling fix that closed a cross-tenant leak.</description>
      <dc:creator>Molecules AI Engineering</dc:creator>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <category>Engineering</category>
      <category>Security</category>
      <category>Architecture</category>
    </item>
  </channel>
</rss>