reference

Coordinating agents through shared memory

A property of a population of agents that reads and writes the same shared, typed graph, in which coordination between them follows from what the graph already records rather than from a dedicated coordination layer running beside it.

An agent working alongside others needs some way of finding out what they have already done, are doing now, or are waiting on. Coordinating agents through shared memory names an arrangement in which that channel is the same graph either agent already reads and writes for its own reasoning: a declared intention before work starts, a claim recorded on the unit of work itself, a question left as an entry rather than addressed to one recipient. The term is used by the Vinculum project and set out formally, alongside the rest of the substrate, in the Vinculum Standard.

§01 · definition

Coordination without a coordination layer.

Most systems that run several language-model agents at once add a coordination layer beside the memory layer: a task queue, a message bus, an orchestration graph that decides which agent acts next. The two layers are built, versioned, and reasoned about separately, and an agent that needs to know what a peer is doing has to query the coordination layer specifically for that purpose.

Coordinating agents through shared memory describes the alternative: a population of agents reads and writes the same typed graph already described in substrate memory, and coordination follows from what is already visible there rather than from a system built for that purpose. An agent picking up a unit of work reads the same entries that record decisions, findings, and open questions; nothing about a claim, a declared intention, or a stalled task lives in a store the rest of the graph cannot see.

§02 · authority tiers

One coordinating role, a population of execution agents.

Rather than treat every agent as a peer with equal authority, the model separates a single coordinating role, responsible for strategy and for deciding what work exists, from a population of execution agents that carry it out in parallel. Execution agents are differentiated by scope and by the resources assigned to them, not by a separate protocol for how they reason or which part of the graph they can read; each reasons over the same substrate the coordinating role does, working within a portion of it declared at the time work begins.

Strategy and cognition stay unified above that line. Parallelism is where the tiers diverge, not where reasoning does: an execution agent is a smaller-scoped instance of the same kind of reasoning the coordinating role performs, not a different, more constrained kind of process.

§03 · avoiding collision

Declared scope, not enforced exclusion.

Two mechanisms make the working state of the whole population visible to each agent without adding a locking service.

MechanismDescription
declared scopeAn agent claiming a unit of work states, at the time it claims it, which paths or areas it intends to touch. The declaration is written to the same graph the claim itself is written to, not to a separate registry.
shared activityA read against the graph can surface which other agents are active nearby and how their declared scope overlaps, returned as an ordinary field on that read rather than fetched from a dedicated coordination service.
advisory boundaryThe mechanism observes and surfaces overlap; it does not itself refuse a conflicting write. Where exclusion holds, it holds because the overlap is visible and agents route around it, not because the substrate enforces it.

An alternative considered for this problem was isolating each agent's work in its own copy of the underlying files, such as a separate branch or working copy, and reconciling the differences afterward. That approach fails specifically once agents run on separate machines: two isolated copies are blind to each other until the point they are reconciled, by which time both agents have already done the conflicting work. A shared, observable layer can surface an overlap before either agent writes anything, which isolate-then-reconcile cannot do by construction.

§04 · unit of work

A claim is a fact any agent can read.

A unit of work assigned to the population is itself an entry in the graph, claimed by exactly one agent at a time. Claiming is atomic: when several agents attempt to claim from the same queue at once, each receives a different unit of work rather than several agents receiving the same one and discovering the collision only afterward.

Progress is recorded as a sequence of dated additions to that same entry, rather than in a separate status field a peer has to look up elsewhere: a claim, zero or more progress notes, a completion, a review. An agent that picks up a stalled or reassigned unit of work reads that sequence and the entries it references, rather than being handed a summary assembled specifically for the handoff.

Because recovering from a stall means rereading the graph rather than replaying a saved process state, no separate retry or recovery machinery is required. A unit of work left incomplete becomes available to claim again after a period of inactivity, and the agent that picks it up next has exactly the record its predecessor left, not a report generated after the fact.

§06 · common questions

Common questions.

Is this a multi-agent framework?

No. It describes a property that follows from a shared substrate already used for memory, not a runtime that assigns roles or defines a sequence of steps. An orchestration framework can be built on top of a shared substrate; the substrate itself does not require one.

Is the collision-avoidance mechanism a lock?

No. Declared scope and shared activity make an overlap visible; nothing in the mechanism refuses a conflicting write. Exclusion, where it holds, is a convention agents and the people supervising them follow because the overlap is visible, not a guarantee the substrate enforces.

What happens if an agent stops responding mid-task?

The unit of work it held becomes available to claim again after a period of inactivity. The agent that claims it next reads the same entries its predecessor left, rather than relying on a saved process state or a summary assembled for the handoff.

Does this replace direct communication between agents?

Agents can still address one another through the graph, such as a question entry aimed at a specific peer, but coordination does not depend on a message reaching a particular recipient. Anything either agent needs to know is visible to any agent that reads the same graph.