Development record
An opt-in adapter to a local message broker brings push delivery and cross-machine reach to the session mailbox: with the adapter enabled a session is woken the moment a message arrives, machines on the local network exchange messages without a shared mount, and every delivered message is still mirrored to the mailbox as a record; without it the mailbox works as before
Press Release
Seeded from a quoted-text intent capture. Expand into the full press-release narrative before planning.
Why This Matters
An opt-in adapter to a local message broker brings push delivery and cross-machine reach to the session mailbox: with the adapter enabled a session is woken the moment a message arrives, machines on the local network exchange messages without a shared mount, and every delivered message is still mirrored to the mailbox as a record; without it the mailbox works as before
Mechanism
Prompted (the claim-recording gradient): why the authors expect this to work, as a falsifiable "we expect X because Y" — not the outcome restated. Replace this line with the claim, or with the exact token
None stated.alone on its line to record the claim as considered and declined.
Scope Conditions
Required (the claim-recording gradient): the population, platform, scale, or assumptions this claim holds under, one per top-level bullet —
abcd intent planstamps each with a persistent identity. Replace this line with those bullets, or with the exact tokenNone stated.alone on its line.
Acceptance Criteria
Required (the itd-1 discipline): add at least one Given-When-Then bullet describing the verifiable bar for "shipped" before this draft can be planned.
Prior Art
- itd-2609151838312703 — the basic this adapter extends; sequenced after it, and it shares the mailbox's record contract.
- 2026-09-15-agent-messaging-on-a-local-network — ranks an embedded NATS server with JetStream as the adapter, with an MCP mailbox server as the runner-up.
- basics-built-in-adapters-bring-power — the stance; the adapter is opt-in and never a precondition.
SOTA
Surveyed on 2026-09-15 in the local-network messaging note; re-checked on 2026-10-23 against the basic's 2026-10-15 ruling and the broker's current documentation.
- The basic this adapter extends has changed shape. The 2026-09-15 survey ranked a Maildir-shaped shared-directory mailbox as the basic. The product thinker's 2026-10-15 ruling on itd-2609151838312703 replaced it with fixed-form notices on the shared remote and no free text (session-messages note). This draft's "mirrored to the mailbox as a record" and "without a shared mount" premises now point at a mailbox that will not be built. What is left for an adapter is push delivery: waking a session the moment a notice lands, instead of on its next fetch.
- With persistence on the remote, JetStream is not needed. JetStream is
NATS's persistence layer, and the reason it ranked first on 2026-09-15 goes
once the remote is the record of truth and the broker only wakes sessions.
The candidate is core NATS embedded: the server is a Go package
(
nats-server/v2/server, Apache-2.0, v2.15.1 published 2026-10-09; a newer release exists, to be pinned at sign-off). It exposesNewServer,Start,ReadyForConnectionsand an in-processInProcessConn, so one abcd binary can host it with no second install (package documentation). The pages opened describe only the standalone binary and say nothing about embedding (the NATS ecosystem page, where the clients URL now lands). Embedding is a property of the Go package, not a documented deployment mode. - An unconfigured server admits every connection (NATS documentation, per the 2026-09-15 note), so authentication (NKeys) is mandatory configuration, not an option.
- Free text stays out. The incidents and the CaMeL-style defence behind the basic's no-free-text rule apply to anything the broker carries, so a broker message is a notice of the same fixed kinds, never a channel for prose.
- Runners-up, re-weighed for wake-up only: Mosquitto and Redis Streams do not embed in a Go binary, but an embeddable Go MQTT v5 broker does exist (mochi-mqtt/server, MIT, active September 2026) and is the lighter alternative to embedded NATS for this role, to be weighed by dependency weight against nats-server at sign-off; ZeroMQ has no persistence, which this role no longer needs; A2A assumes a served endpoint per agent.
Path 2: an opt-in adapter carrying the basic's notice record unchanged,
with the remote as the record of truth and the broker as a wake-up layer only.
The broker is the smaller embeddable one that meets wake-up only (core NATS
without JetStream, or mochi-mqtt/server); either is a new Go dependency and
needs explicit sign-off before go get, for the smaller one. The independent fit-challenge runs at plan time.
Open Questions
None recorded yet.
Audit Notes
Empty. Populated by intent-auditor when intent moves to shipped/.
Frontmatter
| id | itd-2609151838327688 |
|---|---|
| type | intent |
| lifecycle | drafts |
| severity | minor |
.abcd/development/intents/drafts/itd-2609151838327688-an-opt-in-adapter-to-a-local-message.md
open on GitHub ↗ · commit history ↗
References1
- itd-2609151838312703Sessions under any account, on any machine or in the cloud announce what they are doing through short fixed-form announcements on the shared remote, a person reads everyone's status with one command, and what is really a hold stays a reservationbuilds on
Referenced by2
- iss-2610262042524170itd-2609151838327688 mirrors messages to the session mailbox; itd-2609151838312703 says that mailbox is retiredrelated
- itd-2609151838312703Sessions under any account, on any machine or in the cloud announce what they are doing through short fixed-form announcements on the shared remote, a person reads everyone's status with one command, and what is really a hold stays a reservationrelated
mentions4
- dcn-26092200000000042026-09-22 — Two intents the product thinker added for the autonomous run of 2026-09-23, interviewed and planned the night before (both READY, both in the run's batch 1b). A managed repository reports back to abcd (itd-2609221656361680): one verb files a written account against an abcd-issued template with a machine-readable block beside the prose, into an inbox in the user account's machine store, never in either repository's tree; abcd says at its next start how many wait and from how many repositories; a read-only verb renders them naming the sender; nothing is filed until a person or a session acts, and what is filed carries the sender's root-commit fingerprint and a generic description, never its name. Two sessions share one run (itd-2609221656373558): the second joins without a word from the first and the first never waits on it; all three division modes are tried, one per window in order (a claim per record, whole batches, build against review-and-land), because the product thinker wants each measured rather than one chosen in advance; a claim is an atomic create with a lease that lapses; the second session holds at most one lane, may never cut a release or take a lane that recalibrates the reading corpus, backs off on contention with a logged reason, and its stop conditions stop only itself; the run's report compares the three modes on lanes landed, wall clock, collisions and agent minutes. Cross-account and cross-machine agent communication stays out of the run: the four drafts (itd-33, itd-2609151838312703, itd-2609151838327688, itd-2609150819440345) get planning briefs only, with the trust question a shared mailbox raises named in the brief.
- iss-2610262044310958The shipped inbox hands cross-machine report delivery to the announcements intent, which carries no free text
- itd-1Every Intent Has Acceptance Criteria; Every Audit Verifies Them
- itd-2609221656361680A managed repository reports back to abcd, and abcd says so at its next start