AirMemo
AirMemo
Sheet 01
Rev A
Governed push
Scale 1:1

Everyone's building smarter agents.We're building the layer that keeps them from acting on yesterday.

Dispatch never interrupts a crew mid-flight. When a flight plan changes, the revised copy goes to every cockpit on the ACARS printer. Nobody grabs the yoke; the pilot reads it at the next natural moment, and the printed receipt proves it arrived. AirMemo runs the same discipline for agent sessions: authorized memos land in context on the next turn, with a receipt that proves what each agent saw.

one static binary · no daemon · user-space install · checksum-verified

One agent turn. A memo arrives at the start of the turn, and the agent ships the authorized pull request instead of the one it was about to ship.

one agent turnclaude
AIRMEMO · authorized

PR #4821 ships today

shipping PR #4824

shipping PR #4821

the receipt · what each agent saw

Receiptfour adapters · one contract
claudeSessionStart · 141 tokenshookSpecificOutput.additionalContext
codexSessionStart · 141 tokenshookSpecificOutput.additionalContext
copilotsessionStart · 127 tokensadditionalContext
geminiSessionStart · 141 tokenshookSpecificOutput.additionalContext
proof4d3f0ffcd53da494f056386342174bbd672cf4359071f226fe9c47ee24b23d21

queued → injected → receipted → expired

The problem: your agents are acting on yesterday

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.

The evidence is measured, not anecdotal. In the Meetless stale-context study, 10 frontier models were given a task whose answers had been superseded by dated notes on disk. 0 of 6 got it right, and they were confidently wrong — shipping stale facts while reading zero files. Our own Meetless-style benchmark reproduces the effect on a local model: 1/6 reading the shelf as it is, 4/6 when the in-force memo is pushed into context. The best agent with stale context loses to a mediocre agent with current context.

The inversion

Every tool makes agents smarter. Nobody makes them not wrong. That's the gap we're closing: not a smarter agent, a better-informed one.

The mechanism: next action, not current sentence

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 session context and is prompt-visible on the next turn. It never touches retrieval, RAG, or memory stores — and it never interrupts mid-conversation. Delivery is next turn, guaranteed, with an honest state machine:

queued → injected → receipted → expired

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. "The 2/15 memo supersedes the 2/14 memo; the winning value: PR #4821 ships." Complete, in-force, precedence-resolved — the render contract that makes a multi-book shelf actable, not a pile.

Multi-vendor by design

Works across the fleets you already runClaude CodeCodexGitHub CopilotGemini CLI

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.

The memo — rendered once, injected four ways

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]

proof · 4d3f0ffcd53da494f056386342174bbd672cf4359071f226fe9c47ee24b23d21

claude

SessionStart · 141 tokens

{"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]"}}

codex

SessionStart · 141 tokens

{"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]"}}

copilot

sessionStart · 127 tokens

{"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]"}

gemini

SessionStart · 141 tokens

{"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]"}}

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).

The four documents above are generated from the shipping adapters (hook/platforms/*.go) — the same code paths that run on every session start. make artifact re-renders them, so the demo cannot drift from the product.

Want the full picture? One memo, four vendors — side-by-side1

Install: one line, then enroll

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.

The installer is held until the v0.1.0 public release (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 (airmemo-hook-<os>-<arch>, one static binary per platform), and the enroll step wires it into your agent:

# macOS / Linux (bash) — installer verifies SHA256SUMS before anything runs
#   curl -fsSL <public-release-url>/airmemo-hook-<os>-<arch> --checksum SHA256SUMS
airmemo-hook enroll --org YOUR_ORG --platform claude

Every release is checksum-published: the installer refuses to run if the binary doesn't match SHA256SUMS, and refuses to pipe anything to sudo — user-space install, merge-safe hook config (your existing hooks are preserved), hash-pinned so re-installs never trip a vendor fingerprint gate. Platforms: Claude Code · Codex · Copilot · Gemini CLI.

The receipt: proof, not pixels

Every delivery writes a receipt — 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:

  • Audit evidence — what each agent saw, for compliance and post-incident review
  • Billing meter — the honest count of governed deliveries
  • The acquisition metric — agents under management, a first-class product number from day one

Delivered memos are visibly stamped as authorized — [AIRMEMO · authorized · memo_4821] — so agents and reviewers can always tell the shelf from graffiti.

The shelf, live

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.

Agents under management
Memos served
Pending right now
Pushed in 24h

Live from the control plane

The ticker reads the public /public/fleet.json 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.

See it break, then see it fixed

Two agents, the same task.

One stale-context agent, confidently wrong. One pushed. The receipt trail flips red to green live.

Recorded 2026-09-15 · AirMemo-owned benchmark (Meetless protocol)

Pilot pricing

Priced per agent seat, governed by the control plane. Variable cost per seat is pennies; the value is the governance.

TierPriceWhat's in it
Free$0 (up to 5 agents)Basic push, 7-day audit trail — seed a fleet, see the receipts
Team$9 / agent / moScope routing, priorities, Slack & Teams webhooks, 30-day audit
Business pilot$19 / $24 / $29 / agent / moGovernance workflows, approvals, audit export, managed-hook install — SSO is enterprise-triggered (see whitepaper)
EnterpriseCustomSelf-hosted on-prem, DPA, compliance, support — the governance layer inside your VPC

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.

The library: who gets to put books in it

Every context layer eventually asks the same question, and the answer is the product: who is allowed to put a book on the shelf?

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.

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.

Footnotes

  1. hook/scripts/render-all renders the artifact; the landing section imports it. Claude / 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).