Choosing a coordination system

Radia is built for independently deployed participants whose collaboration must stay checkable: the runtime authorizes each handoff and records who acted and which records produced the result. It combines content-based work selection with runtime-enforced input and output policy, narrowed delegation and credentialless execution. Other systems often provide stronger workflow execution, messaging ecosystems or in-process orchestration.

Capability summary

Radia stores routing interests as queryable records and authorizes operations using the contents of each record. The participant asks for a shape of work; the runtime intersects that request with its grants and applies the same policy when the participant writes a result. Results return to the space for downstream matching, with data and authority provenance kept separate.

The table compares native abstractions, not every capability that can be added through custom application code or surrounding infrastructure.

Native unit of coordinationEvidence kept by the systemNative authorization boundary
Radia immutable record selected by content records, lineage, leases and runtime events operation, kind and declared record contents
Temporal workflow, activity and task queue durable workflow event history service and namespace controls; workflow policy remains application-defined
RabbitMQ exchange, routing key and queue messages and broker events; result relationships are application-owned virtual host, resource and optional topic-routing permissions
NATS subject, stream and consumer retained messages and stream state account and publish or subscribe subject permissions
Kafka topic, partition and record key retained log records and consumer offsets cluster and named-resource ACLs
DBOS function, workflow and queue transaction-backed execution history application and database identities
LangGraph, CrewAI agents and transitions defined by the application framework state, messages or checkpoints application-defined

Where enforcement lives

PropertyRadia's native boundary
Input authorizationRuntime intersects requested content with grants before query, watch or claim
Output authorizationRuntime checks every write, including a result emitted while settling a lease
Shared toolsDelegated run contains only the overlap of caller and worker authority
Generated codeJailed process holds no credential and proposes through a trusted host
ProvenanceAuthority follows leases; handling labels follow data parents
Code deploymentExecutable binding and claim grant must agree on the workspace digest

These controls can be assembled around another system. The distinction is that Radia makes them shared enforcement semantics instead of checks every worker must implement correctly.

Queues, streams and topic exchanges

RabbitMQ, NATS and Kafka are established choices for moving messages between services. They offer mature operations, client ecosystems and substantially broader production experience.

Radia differs in treating the input, claim and result as related records in one space. A broker can support the same application-level history, but the application must store and relate the consumer's output separately.

A broker and Radia place application results in different abstractions In the broker example, a consumer receives a message and stores its result in an application-owned system that downstream code must know. In Radia, the input and result are related records in the same space, and another worker discovers the result by matching it. broker transport plus application-owned history message consumer application store result + relationship downstream knows that store one record space document record summarizer summary record worker matches it
Brokers can retain messages; retention is not the distinction. Radia makes the consumer's output another related, routable record instead of requiring a separate application history.

Radia also exposes live interests through its record model and applies grants to individual record contents. Broker products vary in routing and authorization features, but commonly scope access at a stream, topic, queue or subject boundary.

A Radia worker's request cannot widen its grant, and its answer is authorized before commit. Shared tools can use caller-bounded delegated runs, while generated code can operate through a credential-holding host without receiving the credential itself. A broker can participate in such an architecture, but those are normally application and deployment responsibilities rather than properties of message transport.

Choose a broker when message transport, ecosystem maturity or throughput is the primary need. A broker can also feed records into Radia when both abstractions are useful.

Temporal

Temporal is the stronger choice for durable workflow execution, timers, long-running state machines and a mature managed service. Radia does not implement a durable call stack or a general workflow scheduler.

Temporal dispatches activities by task queue and activity type. Radia selects work by matching declared record fields and can apply a content-scoped grant during that selection.

Use Radia where independent participants must discover work by description or where the payload must participate in the authorization decision.

The systems can be combined. A Temporal workflow can have activities that are Radia participants, or a space can be the exchange between workflows owned by teams that cannot edit each other's code. Temporal keeps the durable call stack, which is deliberately not something Radia tries to have.

Agent frameworks

Frameworks such as LangGraph and CrewAI make agents, tools and transitions explicit in application code. This is direct, easy to inspect and usually faster to start.

Radia becomes relevant when participants are deployed independently, owned by different teams or require separate credentials and operating-system boundaries. Each agent can retain its own authority; a generic host need not become a mini-operator holding the union of every hosted agent's grants, and code launched by that host receives no credential.

The command loop of Radia's chat example contains no tool list, no model name and no routing. It learns what tools exist by reading records, and starting another worker changes what the assistant can do without touching the assistant.

The cost is real. A tool call here is a database write, a claim and an answer, where a framework does a function call. You are buying history, retries, per-record permission and an audit trail. For a fast local tool that nobody will ever need to audit, that is a bad deal, and you should use the function call.

DBOS

DBOS is the closest thing to a sibling. It makes the same underlying bets: Postgres as the one source of truth, stateless processes above it, durability recorded per operation rather than as a stream of events to replay. Its published performance numbers slow down on contention at the front of a queue, which is the same wall a single-winner claim hits.

The difference is not speed. In DBOS every process talks to Postgres directly, holding database credentials, and routing is by function name. Radia puts one server in the middle so that independent agents can share a space with every successful operation authorized and recorded. Radia pays for that boundary with a network hop and a permission check on every operation.

Do not read those numbers as headroom here. They come from a saturation test on a tuned database with processes writing to it directly. Every operation here also matches a pattern, ranks candidates, checks permission and appends to a log, behind an HTTP request. The same ceiling applies here, at an unmeasured distance.

Evidence and current limits

Research on blackboard-style coordination provides workload-specific support for the general approach. It does not establish that Radia outperforms the alternatives above.

Blackboard is an old term with a narrow meaning: independent workers, the shared store they read and write, and something separate from the workers deciding which one runs next (Corkill, 1991). A markdown file that several agents edit has the first two parts. So does Radia. The third part here is the scheduler, which is designed and not built.

Salemi and colleagues (arXiv:2510.01285, 2025) built a system where a coordinating agent posts requests to a shared board and other agents volunteer for the ones they can handle, so the coordinator never needs to know what any of them are good at. That is the same idea as claiming by description. On three data-discovery benchmarks (KramaBench, plus modified DSBench and DA-Code) it improved end-to-end success by 13 to 57 percent over strong baselines.

Han and Zhang the same year (bMAS) report competitive results at lower token cost, beating both single-agent prompting and fixed multi-agent setups.

A field report, not a study. Thoughtworks put ten engineers in a room for four days, and their agents started coordinating through the git repository without being asked, marking progress in plan documents and picking up work when another agent's changes appeared. It broke their build: the agents could see each other only while everyone committed constantly. The team says it may not reproduce.

Both studies use their own systems and workloads. Radia's benchmark suite measures storage throughput, query latency, watch fan-out and application-shaped load, but all published Radia measurements are self-reported. There is no shared-workload comparison with Temporal or a message broker and no independent production deployment.