the BE bus · how agents talk · packets never globals
OMNIVSThe Silent Failure
OMNI saysAgents talk only by passing BE packets along a bus — the next field chains one hand-off to the next. No shared mutable state, ever.
Inside one agent, layers pass continuation packets; across agents it is the same primitive scaled up — the BE bus. Every message between agents is a BE packet {layer, verb, payload, next}, and the only way to talk is to emit one. There is no shared blackboard, no global store two agents both write. This is the architectural reason a molecular swarm is safe to parallelize: with no shared mutable state there are no data races, and every interaction is a value you can log, replay, and VERIFY.
The next field is what turns isolated messages into a flow. A worker that finishes sets next to the address of whoever should act on its result — the conductor, a critic, or the next stage in a pipeline. Following the next chain end to end reconstructs exactly what happened, which is why the bus and the per-user chain fit together so naturally: the bus carries packets live, the chain records the ones that mattered.
Power-ups you unlock
The BE bus carries every inter-agent message as a {layer,verb,payload,next} packet
No shared blackboard, no global both agents write — packets only
No shared mutable state ⇒ no data races ⇒ safe to parallelize
next chains hand-offs: it names who acts on this result
Following next end to end replays the whole interaction
The Silent Failure attacks — common mistakes
A convenience global store two agents both mutate (re-introduces races)
Packets with no next, so flow stalls and nobody picks up the result
Putting large state in the payload instead of a reference + the chain
Side-channel talk (writing files agents poll) instead of the bus
Boss battleRoute a result through three agents using only BE packets and the next field, then reconstruct the full path by walking the next chain.
Example code
<!doctype html><html><head><meta charset="utf-8"></head>
<body style="background:#06040d;color:#b388ff;font-family:monospace;padding:20px"><pre id="o"></pre>
<script>
// 4-arg BE so the next address is explicit on the bus
const be = (layer, verb, payload, next) => ({ layer, verb, payload, next });
// agents registered on the bus by name; each sets next to who acts on its result
const AGENTS = {
scout: (p)=> be('cell','EXPRESS', { found:'data for ' + p.goal }, 'builder'),
builder:(p)=> be('cell','EXPRESS', { built:'feature from ' + p.found }, 'critic'),
critic: (p)=> be('metaSurf','VERIFY', { ok:true, of:p.built }, null)
};
function bus(start, seed){
const path = [];
let pkt = be('cell','SEED', seed, start);
while(pkt.next){
path.push(pkt.next);
pkt = AGENTS[pkt.next](pkt.payload); // dispatch to whoever next names
}
return { path, final:pkt };
}
const r = bus('scout', { goal:'ship' });
document.getElementById('o').textContent =
'packet path: ' + r.path.join(' → ') + '\nfinal: ' + JSON.stringify(r.final.payload);
</script></body></html>