<?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>AirMemo</title>
        <link>https://landing-production-b47a.up.railway.app</link>
        <description>The layer that keeps agents from acting on yesterday</description>
        <lastBuildDate>Sat, 19 Sep 2026 09:19:50 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>AirMemo</title>
            <url>https://landing-production-b47a.up.railway.app/favicon.ico</url>
            <link>https://landing-production-b47a.up.railway.app</link>
        </image>
        <copyright>All rights reserved 2026</copyright>
        <item>
            <title><![CDATA[The problem: your agents are acting on yesterday]]></title>
            <link>https://landing-production-b47a.up.railway.app/#the-problem-your-agents-are-acting-on-yesterday</link>
            <guid isPermaLink="false">https://landing-production-b47a.up.railway.app/#the-problem-your-agents-are-acting-on-yesterday</guid>
            <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[

<p>The problem is the same on the shop floor. The foreman posts the new drawing
on the wall; the part already in the press finishes to the old spec. Nobody
grabs a machine mid-cycle, and nobody expects the new drawing to take effect
until the press stops. Agents are different — or they shouldn't be. Today,
whatever is already in a session reads as current, and every agent acts on it
that way. Nobody governs the shelf.</p>
<p>The evidence is measured, not anecdotal. In the <a href="https://research.meetless.ai/stale-context/">Meetless stale-context study</a>, 10 frontier models were given a task whose answers had been superseded by dated notes on disk. <strong>0 of 6</strong> got it right, and they were <em>confidently</em> wrong — shipping stale facts while reading zero files. Our own Meetless-style benchmark reproduces the effect on a local model: <strong>1/6</strong> reading the shelf as it is, <strong>4/6</strong> when the in-force memo is pushed into context. The best agent with stale context loses to a mediocre agent with current context.</p>
<h3 id="-the-inversion"> The inversion</h3>
<p>Every tool makes agents smarter. Nobody makes them <em>not wrong</em>. That's the gap
we're closing: not a smarter agent, a better-informed one.</p>
]]></content:encoded>
            <author>hello@airmemo.com (AirMemo)</author>
        </item>
        <item>
            <title><![CDATA[The mechanism: next action, not current sentence]]></title>
            <link>https://landing-production-b47a.up.railway.app/#the-mechanism-next-action-not-current-sentence</link>
            <guid isPermaLink="false">https://landing-production-b47a.up.railway.app/#the-mechanism-next-action-not-current-sentence</guid>
            <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[

<p>AirMemo is a shelf, not a memory. A small hook rides the lifecycle events your
agents already expose — session start and prompt submit — and checks one thing:
does the shelf hold an authorized memo for this agent? If it does, the memo is
delivered into the agent's <strong>session context</strong> and is <strong>prompt-visible on the
next turn</strong>. It never touches retrieval, RAG, or memory stores — and it never
interrupts mid-conversation. Delivery is <em>next turn, guaranteed</em>, with an honest
state machine:</p>
<p><code>queued → injected → receipted → expired</code></p>
<p>The librarian decides what goes on the shelf — who may push, to which scopes,
at what priority — and marks each memo with the value that wins when it
conflicts with an older one. <em>"The 2/15 memo supersedes the 2/14 memo; the
winning value: PR #4821 ships."</em> Complete, in-force, precedence-resolved — the
render contract that makes a multi-book shelf actable, not a pile.</p>
<h3 id="-multi-vendor-by-design"> Multi-vendor by design</h3>
<div class="mt-8 flex flex-wrap items-center gap-2"><span class="text-xs/5 font-medium text-ink-soft">Works across the fleets you already run</span><span class="rounded-full border border-teal-700/25 bg-paper-wash px-3 py-1.5 text-xs/5 font-semibold text-teal-700">Claude Code</span><span class="rounded-full border border-teal-700/25 bg-paper-wash px-3 py-1.5 text-xs/5 font-semibold text-teal-700">Codex</span><span class="rounded-full border border-teal-700/25 bg-paper-wash px-3 py-1.5 text-xs/5 font-semibold text-teal-700">GitHub Copilot</span><span class="rounded-full border border-teal-700/25 bg-paper-wash px-3 py-1.5 text-xs/5 font-semibold text-teal-700">Gemini CLI</span></div>
<p>No enterprise fleet is single-vendor, so AirMemo isn't either. Four adapters,
one delivery contract — and the hedge is not a promise, it's a fixture.</p>
<div class="wide-exhibit mt-8 space-y-4"><div class="rounded-xl border border-teal-700/25 bg-paper-wash"><div class="border-b border-teal-700/25 px-4 py-2"><p class="text-2xs/4 font-medium text-teal-700 uppercase">The memo — rendered once, injected four ways</p></div><pre tabindex="0" aria-label="The memo" class="overflow-x-auto px-4 py-3 text-xs/5 whitespace-pre-wrap text-ink">URGENT — PR #4821 ships today — freeze lifted 18:00 UTC

The 2/14 freeze memo is superseded. The deploy window opens 18:00 UTC and closes 20:00 UTC.

- Ship PR #4821 (context-freshness KPI) — it is the release gate for this window
- Do NOT ship PR #4824 (still blocked on design review)
- If the window slips, the new freeze memo lands before 17:45 UTC

On-call: u_priya. Escalate to #incident if the window closes without a ship.

[AIRMEMO · authorized · memo_4821]</pre><div class="px-4 py-2 border-t border-teal-700/25"><p class="text-2xs/4 font-medium text-ink-soft break-all">proof · <!-- -->4d3f0ffcd53da494f056386342174bbd672cf4359071f226fe9c47ee24b23d21</p></div></div><div class="grid grid-cols-1 gap-3 sm:grid-cols-2"><div class="overflow-hidden rounded-xl border border-teal-700/25 bg-paper-wash"><div class="flex items-baseline justify-between gap-2 border-b border-teal-700/25 px-4 py-2"><p class="text-xs/5 font-semibold text-ink capitalize">claude</p><p class="text-2xs/4 font-medium text-ink-soft">SessionStart<!-- --> · <!-- -->141<!-- --> tokens</p></div><pre tabindex="0" aria-label="claude rendered document" class="overflow-x-auto px-4 py-3 text-[10.5px]/4 text-ink-soft">{"hookSpecificOutput":{"hookEventName":"SessionStart","additionalContext":"URGENT — PR #4821 ships today — freeze lifted 18:00 UTC\n\nThe 2/14 freeze memo is superseded. The deploy window opens 18:00 UTC and closes 20:00 UTC.\n\n- Ship PR #4821 (context-freshness KPI) — it is the release gate for this window\n- Do NOT ship PR #4824 (still blocked on design review)\n- If the window slips, the new freeze memo lands before 17:45 UTC\n\nOn-call: u_priya. Escalate to #incident if the window closes without a ship.\n\n[AIRMEMO · authorized · memo_4821]"}}</pre></div><div class="overflow-hidden rounded-xl border border-teal-700/25 bg-paper-wash"><div class="flex items-baseline justify-between gap-2 border-b border-teal-700/25 px-4 py-2"><p class="text-xs/5 font-semibold text-ink capitalize">codex</p><p class="text-2xs/4 font-medium text-ink-soft">SessionStart<!-- --> · <!-- -->141<!-- --> tokens</p></div><pre tabindex="0" aria-label="codex rendered document" class="overflow-x-auto px-4 py-3 text-[10.5px]/4 text-ink-soft">{"hookSpecificOutput":{"hookEventName":"SessionStart","additionalContext":"URGENT — PR #4821 ships today — freeze lifted 18:00 UTC\n\nThe 2/14 freeze memo is superseded. The deploy window opens 18:00 UTC and closes 20:00 UTC.\n\n- Ship PR #4821 (context-freshness KPI) — it is the release gate for this window\n- Do NOT ship PR #4824 (still blocked on design review)\n- If the window slips, the new freeze memo lands before 17:45 UTC\n\nOn-call: u_priya. Escalate to #incident if the window closes without a ship.\n\n[AIRMEMO · authorized · memo_4821]"}}</pre></div><div class="overflow-hidden rounded-xl border border-teal-700/25 bg-paper-wash"><div class="flex items-baseline justify-between gap-2 border-b border-teal-700/25 px-4 py-2"><p class="text-xs/5 font-semibold text-ink capitalize">copilot</p><p class="text-2xs/4 font-medium text-ink-soft">sessionStart<!-- --> · <!-- -->127<!-- --> tokens</p></div><pre tabindex="0" aria-label="copilot rendered document" class="overflow-x-auto px-4 py-3 text-[10.5px]/4 text-ink-soft">{"additionalContext":"URGENT — PR #4821 ships today — freeze lifted 18:00 UTC\n\nThe 2/14 freeze memo is superseded. The deploy window opens 18:00 UTC and closes 20:00 UTC.\n\n- Ship PR #4821 (context-freshness KPI) — it is the release gate for this window\n- Do NOT ship PR #4824 (still blocked on design review)\n- If the window slips, the new freeze memo lands before 17:45 UTC\n\nOn-call: u_priya. Escalate to #incident if the window closes without a ship.\n\n[AIRMEMO · authorized · memo_4821]"}</pre></div><div class="overflow-hidden rounded-xl border border-teal-700/25 bg-paper-wash"><div class="flex items-baseline justify-between gap-2 border-b border-teal-700/25 px-4 py-2"><p class="text-xs/5 font-semibold text-ink capitalize">gemini</p><p class="text-2xs/4 font-medium text-ink-soft">SessionStart<!-- --> · <!-- -->141<!-- --> tokens</p></div><pre tabindex="0" aria-label="gemini rendered document" class="overflow-x-auto px-4 py-3 text-[10.5px]/4 text-ink-soft">{"hookSpecificOutput":{"hookEventName":"SessionStart","additionalContext":"URGENT — PR #4821 ships today — freeze lifted 18:00 UTC\n\nThe 2/14 freeze memo is superseded. The deploy window opens 18:00 UTC and closes 20:00 UTC.\n\n- Ship PR #4821 (context-freshness KPI) — it is the release gate for this window\n- Do NOT ship PR #4824 (still blocked on design review)\n- If the window slips, the new freeze memo lands before 17:45 UTC\n\nOn-call: u_priya. Escalate to #incident if the window closes without a ship.\n\n[AIRMEMO · authorized · memo_4821]"}}</pre></div></div><p class="text-xs/5 text-ink-soft">Generated by the shipping adapters (hook/platforms/*.go), not mockups — make artifact keeps the committed artifact in lockstep with the code. Claude Code / Codex / Gemini CLI share the hookSpecificOutput envelope; Copilot's command hooks take a flat additionalContext payload (modifiedPrompt is dropped by the runtime, so it is never emitted).</p></div>
<p>The four documents above are generated from the shipping adapters
(<code>hook/platforms/*.go</code>) — the same code paths that run on every session start.
<code>make artifact</code> re-renders them, so the demo cannot drift from the product.</p>
<p>Want the full picture? <a href="/render-all/index.html">One memo, four vendors — side-by-side</a><sup><a id="user-content-fnref-1" data-footnote-ref="true" aria-describedby="footnote-label" href="#user-content-fn-1">1</a></sup></p>
]]></content:encoded>
            <author>hello@airmemo.com (AirMemo)</author>
        </item>
        <item>
            <title><![CDATA[Install: one line, then enroll]]></title>
            <link>https://landing-production-b47a.up.railway.app/#install-one-line-then-enroll</link>
            <guid isPermaLink="false">https://landing-production-b47a.up.railway.app/#install-one-line-then-enroll</guid>
            <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[

<p>The hook is a single static binary — no runtime, no daemon install, no admin.
Checksums are verified against the published manifest before anything runs;
the installer never elevates and never touches a config that isn't yours.</p>
<p>The installer is <strong>held until the v0.1.0 public release</strong> (in the works), and
there is nothing to download yet — no private links, no preview pipes. When it
ships, the install command comes from the public release on GitHub
(<code>airmemo-hook-&lt;os&gt;-&lt;arch&gt;</code>, one static binary per platform), and the
<code>enroll</code> step wires it into your agent:</p>
<pre><code class="language-bash"><span><span style="color: var(--shiki-token-comment)"># macOS / Linux (bash) — installer verifies SHA256SUMS before anything runs</span></span>
<span><span style="color: var(--shiki-token-comment)">#   curl -fsSL &lt;public-release-url&gt;/airmemo-hook-&lt;os&gt;-&lt;arch&gt; --checksum SHA256SUMS</span></span>
<span><span style="color: var(--shiki-token-function)">airmemo-hook</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">enroll</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">--org</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">YOUR_ORG</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">--platform</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string)">claude</span></span>
<span></span></code></pre>
<p>Every release is checksum-published: the installer refuses to run if the
binary doesn't match <code>SHA256SUMS</code>, and refuses to pipe anything to <code>sudo</code> —
user-space install, merge-safe hook config (your existing hooks are
preserved), hash-pinned so re-installs never trip a vendor fingerprint gate.
Platforms: <strong>Claude Code · Codex · Copilot · Gemini CLI</strong>.</p>
]]></content:encoded>
            <author>hello@airmemo.com (AirMemo)</author>
        </item>
        <item>
            <title><![CDATA[The receipt: proof, not pixels]]></title>
            <link>https://landing-production-b47a.up.railway.app/#the-receipt-proof-not-pixels</link>
            <guid isPermaLink="false">https://landing-production-b47a.up.railway.app/#the-receipt-proof-not-pixels</guid>
            <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[

<p>Every delivery writes a <strong>receipt</strong> — an append-only, signed record of what was
delivered, to which agent, on which platform, and when it expired. The receipt
is three things at once:</p>
<ul>
<li><strong>Audit evidence</strong> — what each agent saw, for compliance and post-incident review</li>
<li><strong>Billing meter</strong> — the honest count of governed deliveries</li>
<li><strong>The acquisition metric</strong> — agents under management, a first-class product number from day one</li>
</ul>
<p>Delivered memos are visibly stamped as authorized —
<code>[AIRMEMO · authorized · memo_4821]</code> — so agents and reviewers can always tell
the shelf from graffiti.</p>
]]></content:encoded>
            <author>hello@airmemo.com (AirMemo)</author>
        </item>
        <item>
            <title><![CDATA[The shelf, live]]></title>
            <link>https://landing-production-b47a.up.railway.app/#the-shelf-live</link>
            <guid isPermaLink="false">https://landing-production-b47a.up.railway.app/#the-shelf-live</guid>
            <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[

<p>Every number below is one SQL count on the live control-plane database —
read right now, no mockups, no roadmap. Receipts are append-only, so the
served count can only go up.</p>
<div class="wide-exhibit mt-8 overflow-hidden rounded-xl border border-teal-700/25 bg-paper-wash"><dl class="grid grid-cols-2 divide-x divide-y divide-teal-700/20 sm:grid-cols-4 sm:divide-y-0"><div class="px-4 py-5"><dt class="text-xs/5 font-medium text-ink-soft">Agents under management</dt><dd class="mt-1 font-display text-2xl/8 font-semibold text-ink tabular-nums">–</dd></div><div class="px-4 py-5"><dt class="text-xs/5 font-medium text-ink-soft">Memos served</dt><dd class="mt-1 font-display text-2xl/8 font-semibold text-ink tabular-nums">–</dd></div><div class="px-4 py-5"><dt class="text-xs/5 font-medium text-ink-soft">Pending right now</dt><dd class="mt-1 font-display text-2xl/8 font-semibold text-ink tabular-nums">–</dd></div><div class="px-4 py-5"><dt class="text-xs/5 font-medium text-ink-soft">Pushed in 24h</dt><dd class="mt-1 font-display text-2xl/8 font-semibold text-ink tabular-nums">–</dd></div></dl><div class="flex items-center justify-between border-t border-teal-700/25 px-4 py-2.5"><p class="flex items-center gap-1.5 text-xs/5 text-ink-soft"><span class="inline-block size-1.5 rounded-full bg-teal-700" aria-hidden="true"></span>Live from the control plane</p><p class="text-xs/5 text-ink-soft tabular-nums"></p></div></div>
<p>The ticker reads the public <code>/public/fleet.json</code> endpoint — counts only,
never memo contents, no tracking scripts. Stale on your screen? Then the
control plane is down, and that is exactly the moment the shelf earns its
keep.</p>
]]></content:encoded>
            <author>hello@airmemo.com (AirMemo)</author>
        </item>
        <item>
            <title><![CDATA[See it break, then see it fixed]]></title>
            <link>https://landing-production-b47a.up.railway.app/#see-it-break-then-see-it-fixed</link>
            <guid isPermaLink="false">https://landing-production-b47a.up.railway.app/#see-it-break-then-see-it-fixed</guid>
            <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[

<div class="wide-exhibit relative overflow-hidden rounded-xl border border-teal-700/25 bg-paper-wash"><div class="relative aspect-video"><video class="h-full w-full" controls="" preload="metadata" poster="/media/gasp-demo-poster.jpg" title="Two agents, the same task — one stale-context agent confidently wrong, one pushed. The receipt trail flips red to green live."><source src="/media/gasp_demo.mp4" type="video/mp4">Your browser does not support the video tag.</video></div><div class="relative flex flex-col gap-2 px-6 py-5 text-center"><p class="font-display text-xl/8 font-semibold text-ink">Two agents, the same task.</p><p class="max-w-sm text-sm/6 text-ink-soft">One stale-context agent, confidently wrong. One pushed. The receipt trail flips red to green live.</p><p class="text-xs/5 font-medium text-ink-soft">Recorded 2026-09-15 · AirMemo-owned benchmark (Meetless protocol)</p></div></div>
]]></content:encoded>
            <author>hello@airmemo.com (AirMemo)</author>
        </item>
        <item>
            <title><![CDATA[Pilot pricing]]></title>
            <link>https://landing-production-b47a.up.railway.app/#pilot-pricing</link>
            <guid isPermaLink="false">https://landing-production-b47a.up.railway.app/#pilot-pricing</guid>
            <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[

<p>Priced per agent seat, governed by the control plane. Variable cost per seat is
pennies; the value is the governance.</p>
<div class="mdx-table-wrap"><table><thead><tr><th>Tier</th><th>Price</th><th>What's in it</th></tr></thead><tbody><tr><td><strong>Free</strong></td><td>$0 (up to 5 agents)</td><td>Basic push, 7-day audit trail — seed a fleet, see the receipts</td></tr><tr><td><strong>Team</strong></td><td>$9 / agent / mo</td><td>Scope routing, priorities, Slack &amp; Teams webhooks, 30-day audit</td></tr><tr><td><strong>Business pilot</strong></td><td>$19 / $24 / $29 / agent / mo</td><td>Governance workflows, approvals, audit export, managed-hook install — SSO is enterprise-triggered (see whitepaper)</td></tr><tr><td><strong>Enterprise</strong></td><td>Custom</td><td>Self-hosted on-prem, DPA, compliance, support — the governance layer inside your VPC</td></tr></tbody></table></div>
<p>Self-host runs 1.5–2× list — the same codebase, one image, deployed where your
fleet lives. Every anchor sits above us: Claude Code Team runs ~$100/seat,
Copilot $10–39, Codex $20–200. A $9–49 governance layer is the easy
add-on in the same procurement conversation.</p>
]]></content:encoded>
            <author>hello@airmemo.com (AirMemo)</author>
        </item>
        <item>
            <title><![CDATA[The library: who gets to put books in it]]></title>
            <link>https://landing-production-b47a.up.railway.app/#the-library-who-gets-to-put-books-in-it</link>
            <guid isPermaLink="false">https://landing-production-b47a.up.railway.app/#the-library-who-gets-to-put-books-in-it</guid>
            <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[

<p>Every context layer eventually asks the same question, and the answer is the
product: who is allowed to put a book on the shelf?</p>
<p>AirMemo is the layer that decides who gets to put books in the library — who
may push, to which scopes, at what priority, under whose approval — and it
records every placement in an append-only receipt trail. The delivery
discipline never varies: never a book slipped mid-paragraph, placed on the
desk, seen at next natural look-up. Nothing interrupts a session; everything
is provable.</p>
<p>That is what compliance runs on. Not on trusting agents to read carefully, but
on receipts: what each agent saw, when it saw it, and who authorized it. For
auditors that is evidence; for operators it is the difference between a fleet
quietly acting on yesterday and a fleet acting on the in-force plan.</p>
<section data-footnotes="true" class="footnotes"><h2 class="sr-only" id="footnote-label"><a href="#footnote-label">Footnotes</a></h2>
<ol>
<li id="user-content-fn-1">
<p><code>hook/scripts/render-all</code> renders the artifact; the landing section
imports it. Claude / Codex / Gemini CLI share the <code>hookSpecificOutput</code>
envelope; Copilot's command hooks take a flat <code>additionalContext</code> payload
(<code>modifiedPrompt</code> is dropped by the runtime, so it is never emitted). <a data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref" href="#user-content-fnref-1">↩</a></p>
</li>
</ol>
</section>]]></content:encoded>
            <author>hello@airmemo.com (AirMemo)</author>
        </item>
    </channel>
</rss>